5 name = "SQL Testing Lab",
6 author = "AlliedModders LLC",
7 description = "Tests basic function calls",
9 url = "http://www.sourcemod.net/"
12 public OnPluginStart()
14 RegServerCmd("sql_test_normal", Command_TestSql1)
15 RegServerCmd("sql_test_stmt", Command_TestSql2)
16 RegServerCmd("sql_test_thread1", Command_TestSql3)
17 RegServerCmd("sql_test_thread2", Command_TestSql4)
18 RegServerCmd("sql_test_thread3", Command_TestSql5)
21 PrintQueryData(Handle:query)
23 if (!SQL_HasResultSet(query))
25 PrintToServer("Query Handle %x has no results", query)
29 new rows = SQL_GetRowCount(query)
30 new fields = SQL_GetFieldCount(query)
32 decl String:fieldNames[fields][32]
33 PrintToServer("Fields: %d", fields)
34 for (new i=0; i<fields; i++)
36 SQL_FieldNumToName(query, i, fieldNames[i], 32)
37 PrintToServer("-> Field %d: \"%s\"", i, fieldNames[i])
40 PrintToServer("Rows: %d", rows)
41 decl String:result[255]
43 while (SQL_FetchRow(query))
46 PrintToServer("Row %d:", row)
47 for (new i=0; i<fields; i++)
49 SQL_FetchString(query, i, result, sizeof(result))
50 PrintToServer(" [%s] %s", fieldNames[i], result)
55 public Action:Command_TestSql1(args)
58 new Handle:db = SQL_DefConnect(error, sizeof(error))
59 if (db == INVALID_HANDLE)
61 PrintToServer("Failed to connect: %s", error)
65 new Handle:query = SQL_Query(db, "SELECT * FROM gab")
66 if (query == INVALID_HANDLE)
68 SQL_GetError(db, error, sizeof(error))
69 PrintToServer("Failed to query: %s", error)
77 return Plugin_Handled;
80 public Action:Command_TestSql2(args)
83 new Handle:db = SQL_DefConnect(error, sizeof(error))
84 if (db == INVALID_HANDLE)
86 PrintToServer("Failed to connect: %s", error)
90 new Handle:stmt = SQL_PrepareQuery(db, "SELECT * FROM gab WHERE gaben > ?", error, sizeof(error))
91 if (stmt == INVALID_HANDLE)
93 PrintToServer("Failed to prepare query: %s", error)
95 SQL_BindParamInt(stmt, 0, 1)
96 if (!SQL_Execute(stmt))
98 SQL_GetError(stmt, error, sizeof(error))
99 PrintToServer("Failed to execute query: %s", error)
108 return Plugin_Handled;
111 new Handle:g_ThreadedHandle = INVALID_HANDLE;
113 public CallbackTest3(Handle:owner, Handle:hndl, const String:error[], any:data)
115 PrintToServer("CallbackTest1() (owner %x) (hndl %x) (error \"%s\") (data %d)", owner, hndl, error, data);
116 if (g_ThreadedHandle != INVALID_HANDLE && hndl != INVALID_HANDLE)
120 g_ThreadedHandle = hndl;
124 public Action:Command_TestSql3(args)
126 if (g_ThreadedHandle != INVALID_HANDLE)
128 PrintToServer("A threaded connection already exists, run the next test");
129 return Plugin_Handled;
133 GetCmdArg(1, name, sizeof(name));
135 SQL_TConnect(CallbackTest3, name);
137 return Plugin_Handled;
141 public Action:Command_TestSql4(args)
143 SQL_LockDatabase(g_ThreadedHandle);
144 new Handle:query = SQL_Query(g_ThreadedHandle, "SELECT * FROM gab")
145 if (query == INVALID_HANDLE)
147 new String:error[255];
148 SQL_GetError(g_ThreadedHandle, error, sizeof(error))
149 PrintToServer("Failed to query: %s", error)
151 PrintQueryData(query)
154 SQL_UnlockDatabase(g_ThreadedHandle);
156 return Plugin_Handled;
159 public CallbackTest5(Handle:owner, Handle:hndl, const String:error[], any:data)
161 if (hndl == INVALID_HANDLE)
163 PrintToServer("Failed to query: %s", error)
166 SQL_TQuery(g_ThreadedHandle, CallbackTest6, "UPDATE gab SET `gaben` = `gaben` + 1 WHERE `gaben` >= 4", 52)
170 public CallbackTest6(Handle:owner, Handle:hndl, const String:error[], any:data)
172 if (hndl == INVALID_HANDLE)
174 PrintToServer("Failed to query: %s", error)
176 PrintToServer("Queried!");
177 SQL_TQuery(g_ThreadedHandle, CallbackTest7, "UPDATE gab SET `gaben` = `gaben` + 1 WHERE `gaben` >= 4", 52)
181 public CallbackTest7(Handle:owner, Handle:hndl, const String:error[], any:data)
183 if (hndl == INVALID_HANDLE)
185 PrintToServer("Failed to query: %s", error)
187 PrintToServer("Queried!");
191 public Action:Command_TestSql5(args)
193 SQL_TQuery(g_ThreadedHandle, CallbackTest5, "SELECT * FROM gab", 52)
194 SQL_TQuery(g_ThreadedHandle, CallbackTest5, "SELECT * FROM gab", 52)
195 SQL_TQuery(g_ThreadedHandle, CallbackTest5, "SELECT * FROM gab", 52)
196 SQL_TQuery(g_ThreadedHandle, CallbackTest5, "SELECT * FROM gab", 52)
198 return Plugin_Handled;