DbQuery: Difference between revisions

From Multi Theft Auto: Wiki
Jump to navigation Jump to search
No edit summary
No edit summary
Line 54: Line 54:
             outputDebugString( tag )        -- Prints "hello"
             outputDebugString( tag )        -- Prints "hello"
             outputDebugString( score )      -- Prints 2000
             outputDebugString( score )      -- Prints 2000
         end, {"hello",2000}, connection, "SELECT * FROM table_name" )
         end
        ,{"hello",2000}, connection, "SELECT * FROM table_name" )
</syntaxhighlight>
</syntaxhighlight>



Revision as of 08:44, 7 October 2013

This function starts a database query using the supplied connection. Use the returned query handle with dbPoll to get the result, or dbFree if you don't want the result.

[[{{{image}}}|link=|]] Tip: The server command debugdb 2 will output verbose information on each query to a logging file (usually logs/db.log)

Syntax

handle dbQuery ( [ function callbackFunction, [ table callbackArguments, ] ] element databaseConnection, string query [, var param1 [, var param2 ...]] )

Required Arguments

  • databaseConnection: A database connection element previously returned from dbConnect
  • query: An SQL query. Positions where parameter values will be inserted are marked with a ?

Optional Arguments

  • callbackFunction: An optional function to be called when a result is ready. The function will only be called if the result has not already been read with dbPoll. The function is called with the query handle as the first argument. (Notice: Do not use a function with a local prefix)
  • callbackArguments: An optional table containing extra arguments to be sent to the callback function.
  • paramX: A variable number of parameters. These must be strings or numbers - it is important to make sure they are of the correct type. Also, the number of parameters passed must be equal to the number of ? characters in the query string.

String parameters are automatically quoted and escaped as required. (If you do not want a string quoted, use ??)

Returns

Returns a query handle unless the connection is incorrect, in which case it return false.

Example

This example starts an INSERT query and frees the result:

local qh = dbQuery( connection, "INSERT INTO table_name VALUES (?,?,?)", "aaa", "bbb", 10 )
dbFree( qh )


This example starts a select query and waits for the result: (server freeze included)

local qh = dbQuery( connection, "SELECT * FROM table_name" )
local result = dbPoll( qh, -1 )


This example starts a select query and processes the result in a callback function:

function aaa()
    dbQuery( myCallback, connection, "SELECT * FROM table_name" )
end

function myCallback(qh)
    local result = dbPoll( qh, 0 )   -- Timeout doesn't matter here because the result will always be ready
end


This example starts a select query and processes the result in an inline callback function with custom arguments:

dbQuery( function(qh, tag, score)
            local result = dbPoll( qh, 0 )   -- Timeout doesn't matter here because the result will always be ready
            outputDebugString( tag )         -- Prints "hello"
            outputDebugString( score )       -- Prints 2000
         end
         ,{"hello",2000}, connection, "SELECT * FROM table_name" )

Requirements

Minimum server version 1.1.1-9.03328
Minimum client version n/a

Note: Using this feature requires the resource to have the above minimum version declared in the meta.xml <min_mta_version> section. e.g. <min_mta_version server="1.1.1-9.03328" />

See Also