Advertisement
Guest User

RFT SQL Lite

a guest
Nov 5th, 2012
100
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 10.45 KB | None | 0 0
  1. /*
  2. RFT SQL (Lite) Version 2.0
  3. © 2012 by RFT
  4. ______________________________________________________________
  5.  
  6.  
  7. */
  8. #include <a_samp>
  9.  
  10.  
  11.  
  12.  
  13. /*
  14. native r_mysql_debug();
  15. native r_mysql_connect(host[], user[], password[], database[], bool:AutoReconnect);
  16. native r_LoadEntrance(table[], where1[], where2[]);
  17. native r_UnloadEntrance();
  18. native r_GetString(field[]);
  19. native r_GetInt(field[]);
  20. native Float:r_GetFloat(field[]);
  21. native r_mysql_SetString(field[], to[]);
  22. native r_mysql_SetInt(field[], to);
  23. native r_mysql_SetFloat(field[], Float:to);
  24. native r_mysql_Insert(table[], string[], format[], {Float,_}:...);
  25. */
  26.  
  27.  
  28.  
  29.  
  30.  
  31. new bool: rDebugging;
  32. new bool: r_in_use;
  33. new r_in_use_type;
  34. new r_GET[3][64];
  35. new rConnectInfo[4][32];
  36. new DB:USERDB;
  37. new DBResult:qresult;
  38.  
  39.  
  40.  
  41. stock r_mysql_debug()
  42. {
  43. new string[128];
  44. rDebugging = true;
  45. new Day, Month, Year, Minute, Hour;
  46. gettime(Hour, Minute);
  47. getdate(Year, Month, Day);
  48. new File:rFile;
  49. if(fexist("/rSQL/mysql.log"))
  50. {
  51. rFile = fopen("/rSQL/mysql.log", io_append);
  52. }
  53. else
  54. {
  55. rFile = fopen("/rSQL/mysql.log", io_write);
  56. }
  57. fwrite(rFile, "__________________________________________________");
  58. format(string, sizeof(string), "rSQL Debug gestartet am: %02d.%02d.%d Um: %02d:%02d", Day, Month, Year, Hour, Minute);
  59. fwrite(rFile, string);
  60. fwrite(rFile, "__________________________________________________\r\n\n\n");
  61. fclose(rFile);
  62. return 1;
  63. }
  64.  
  65. stock r_mysql_connect(database[])
  66. {
  67. new string[128];
  68. USERDB = db_open(database);
  69. if(!fexist(database))
  70. {
  71. if(rDebugging == true)
  72. {
  73. new Day, Month, Year, Minute, Hour;
  74. gettime(Hour, Minute);
  75. getdate(Year, Month, Day);
  76. new File:rFile = fopen("/rSQL/mysql.log", io_append);
  77. format(string, sizeof(string), "[%02d.%02d.%d][%02d:%02d]: Es konnte keine Verbindung zu %s hergestellt werden...\r\n", Day, Month, Year, Hour, Minute, database);
  78. fwrite(rFile, string);
  79. format(string, sizeof(string), "[%02d.%02d.%d][%02d:%02d]: Es wird erneut versucht eine Verbindung zu %s herzustellen...\r\n", Day, Month, Year, Hour, Minute, database);
  80. fwrite(rFile, string);
  81. fclose(rFile);
  82. }
  83. USERDB = db_open(database);
  84. if(!fexist(database))
  85. {
  86. if(rDebugging == true)
  87. {
  88. new Day, Month, Year, Minute, Hour;
  89. gettime(Hour, Minute);
  90. getdate(Year, Month, Day);
  91. new File:rFile = fopen("/rSQL/mysql.log", io_append);
  92. format(string, sizeof(string), "[%02d.%02d.%d][%02d:%02d]: Der erneute Versuch eine Verbindung zur Datenbank %s herzustellen ist gescheitert.\r\n", Day, Month, Year, Hour, Minute, database);
  93. fwrite(rFile, string);
  94. format(string, sizeof(string), "[%02d.%02d.%d][%02d:%02d]: Server wird heruntergefahren.\r\n", Day, Month, Year, Hour, Minute);
  95. fwrite(rFile, string);
  96. fclose(rFile);
  97. }
  98. SendRconCommand("exit");
  99. return 1;
  100. }
  101. else
  102. {
  103. if(rDebugging == true)
  104. {
  105. new Day, Month, Year, Minute, Hour;
  106. gettime(Hour, Minute);
  107. getdate(Year, Month, Day);
  108. new File:rFile = fopen("/rSQL/mysql.log", io_append);
  109. format(string, sizeof(string), "[%02d.%02d.%d][%02d:%02d]: Der erneute Versuch eine Verbindung zu %s herzustellen war erfolgreich.\r\n", Day, Month, Year, Hour, Minute, database);
  110. fwrite(rFile, string);
  111. fclose(rFile);
  112. }
  113. }
  114. }
  115. else
  116. {
  117. if(rDebugging == true)
  118. {
  119. new Day, Month, Year, Minute, Hour;
  120. gettime(Hour, Minute);
  121. getdate(Year, Month, Day);
  122. new File:rFile = fopen("/rSQL/mysql.log", io_append);
  123. format(string, sizeof(string), "[%02d.%02d.%d][%02d:%02d]: Verbindung zur Datenbank %s erfolgreich hergestellt.\r\n", Day, Month, Year, Hour, Minute, database);
  124. fwrite(rFile, string);
  125. fclose(rFile);
  126. }
  127. }
  128. return 1;
  129. }
  130.  
  131. stock r_LoadEntrance(table[], where1[], where2[])
  132. {
  133. new Query[128], string[128];
  134. if(r_in_use == false)
  135. {
  136. strmid(r_GET[0], table, 0, strlen(table), 64);
  137. strmid(r_GET[1], where1, 0, strlen(where1), 64);
  138. strmid(r_GET[2], where2, 0, strlen(where2), 64);
  139. format(Query, sizeof(Query), "SELECT * FROM %s WHERE `%s` = '%s'", table, where1, where2);
  140. qresult=db_query(USERDB, Query);
  141. r_in_use = true;
  142. r_in_use_type = 1;
  143. if(db_num_rows(qresult) != 1)
  144. {
  145. return 1;
  146. }
  147. else
  148. {
  149. if(rDebugging == true)
  150. {
  151. new Day, Month, Year, Minute, Hour;
  152. gettime(Hour, Minute);
  153. getdate(Year, Month, Day);
  154. new File:rFile = fopen("/rSQL/mysql.log", io_append);
  155. format(string, sizeof(string), "[%02d.%02d.%d][%02d:%02d]: Eintrag nicht gefunden.\r\n", Day, Month, Year, Hour, Minute, rConnectInfo[3]);
  156. fwrite(rFile, string);
  157. fclose(rFile);
  158. }
  159. return 0;
  160. }
  161. }
  162. else
  163. {
  164. if(rDebugging == true)
  165. {
  166. new Day, Month, Year, Minute, Hour;
  167. gettime(Hour, Minute);
  168. getdate(Year, Month, Day);
  169. new File:rFile = fopen("/rSQL/mysql.log", io_append);
  170. format(string, sizeof(string), "[%02d.%02d.%d][%02d:%02d]: Eintrag konnte nicht geladen werden, Es wurde bereits ein Eintrag geladen.\r\n", Day, Month, Year, Hour, Minute, rConnectInfo[3]);
  171. fwrite(rFile, string);
  172. fclose(rFile);
  173. }
  174. return 0;
  175. }
  176. }
  177.  
  178. stock r_UnloadEntrance()
  179. {
  180. db_free_result(qresult);
  181. r_in_use_type = 0;
  182. r_in_use = false;
  183. return 1;
  184. }
  185.  
  186. stock r_GetString(field[])
  187. {
  188. new Load[128], string[128];
  189. if(r_in_use_type == 1)
  190. {
  191. db_get_field_assoc(qresult,field,string,128);
  192. return string;
  193. }
  194. else
  195. {
  196. if(rDebugging == true)
  197. {
  198. new Day, Month, Year, Minute, Hour;
  199. gettime(Hour, Minute);
  200. getdate(Year, Month, Day);
  201. new File:rFile = fopen("/rSQL/mysql.log", io_append);
  202. format(string, sizeof(string), "[%02d.%02d.%d][%02d:%02d]: Es wurde kein Eintrag geladen.\r\n", Day, Month, Year, Hour, Minute, rConnectInfo[3]);
  203. fwrite(rFile, string);
  204. fclose(rFile);
  205. }
  206. return Load;
  207. }
  208. }
  209.  
  210. stock r_GetInt(field[])
  211. {
  212. return strval(r_GetString(field));
  213. }
  214.  
  215. forward Float:r_GetFloat(Var[]);
  216. stock Float:r_GetFloat(Var[])
  217. {
  218. return floatstr(r_GetString(Var));
  219. }
  220.  
  221. stock r_mysql_SetString(field[], to[])
  222. {
  223. new string[128];
  224. if(r_in_use==true && r_in_use_type == 1)
  225. {
  226. new query[128];
  227. format(query, sizeof(query), "UPDATE %s SET `%s` = '%s' WHERE `%s` = '%s'", r_GET[0], field, to, r_GET[1], r_GET[2]);
  228. db_query(USERDB,query);
  229. r_UpdateRow();
  230. return 1;
  231. }
  232. else
  233. {
  234. if(rDebugging == true)
  235. {
  236. new Day, Month, Year, Minute, Hour;
  237. gettime(Hour, Minute);
  238. getdate(Year, Month, Day);
  239. new File:rFile = fopen("/rSQL/mysql.log", io_append);
  240. format(string, sizeof(string), "[%02d.%02d.%d][%02d:%02d]: Es wurde kein Eintrag geladen.\r\n", Day, Month, Year, Hour, Minute, rConnectInfo[3]);
  241. fwrite(rFile, string);
  242. fclose(rFile);
  243. }
  244. return 0;
  245. }
  246. }
  247.  
  248. stock r_mysql_SetInt(field[], to)
  249. {
  250. new string[128];
  251. if(r_in_use==true && r_in_use_type == 1)
  252. {
  253. new query[128];
  254. format(query, sizeof(query), "UPDATE %s SET `%s` = '%d' WHERE `%s` = '%s'", r_GET[0], field, to, r_GET[1], r_GET[2]);
  255. db_query(USERDB,query);
  256. r_UpdateRow();
  257. return 1;
  258. }
  259. else
  260. {
  261. if(rDebugging == true)
  262. {
  263. new Day, Month, Year, Minute, Hour;
  264. gettime(Hour, Minute);
  265. getdate(Year, Month, Day);
  266. new File:rFile = fopen("/rSQL/mysql.log", io_append);
  267. format(string, sizeof(string), "[%02d.%02d.%d][%02d:%02d]: Es wurde kein Eintrag geladen.\r\n", Day, Month, Year, Hour, Minute, rConnectInfo[3]);
  268. fwrite(rFile, string);
  269. fclose(rFile);
  270. }
  271. return 0;
  272. }
  273. }
  274.  
  275. stock r_mysql_SetFloat(field[], Float:to)
  276. {
  277. new string[128];
  278. if(r_in_use==true && r_in_use_type == 1)
  279. {
  280. new query[128];
  281. format(query, sizeof(query), "UPDATE %s SET `%s` = '%f' WHERE `%s` = '%s'", r_GET[0], field, to, r_GET[1], r_GET[2]);
  282. db_query(USERDB,query);
  283. r_UpdateRow();
  284. return 1;
  285. }
  286. else
  287. {
  288. if(rDebugging == true)
  289. {
  290. new Day, Month, Year, Minute, Hour;
  291. gettime(Hour, Minute);
  292. getdate(Year, Month, Day);
  293. new File:rFile = fopen("/rSQL/mysql.log", io_append);
  294. format(string, sizeof(string), "[%02d.%02d.%d][%02d:%02d]: Es wurde kein Eintrag geladen.\r\n", Day, Month, Year, Hour, Minute, rConnectInfo[3]);
  295. fwrite(rFile, string);
  296. fclose(rFile);
  297. }
  298. return 0;
  299. }
  300. }
  301.  
  302. stock r_UpdateRow()
  303. {
  304. r_UnloadEntrance();
  305. r_LoadEntrance(r_GET[0], r_GET[1], r_GET[2]);
  306. return 1;
  307. }
  308.  
  309. stock r_mysql_Insert(table[], string[], format2[], {Float,_}:...)
  310. {
  311. new start = 3;
  312. new Query[128];
  313. new Query1[128];
  314. new Query2[128];
  315. new str[10][128];
  316. new in[10];
  317. new Float: pi[10];
  318. new f[10][32];
  319. r_split(string, f, ',');
  320. for(new i = 0; i < strlen(format2); i++)
  321. {
  322. switch(format2[i])
  323. {
  324. case 's':
  325. {
  326. for(new i2 = 0; i2 < 128; i2++)
  327. {
  328. str[i][i2]=getarg(i+start, i2);
  329. if(!getarg(i+start, i2+1))
  330. {
  331. break;
  332. }
  333. }
  334. }
  335. case 'd':
  336. {
  337. in[i]=getarg(i+start, 0);
  338. }
  339. case 'f':
  340. {
  341. pi[i]=Float:getarg(i+start, 0);
  342. }
  343. }
  344. }
  345. for(new i = 0; i < strlen(format2); i++)
  346. {
  347. switch(format2[i])
  348. {
  349. case 's':
  350. {
  351. if(i == 0)
  352. {
  353. format(Query1, sizeof(Query1), "`%s`", f[i]);
  354. format(Query2, sizeof(Query2), "'%s'", str[i]);
  355. }
  356. else
  357. {
  358. format(Query1, sizeof(Query1), "%s,`%s`", Query1, f[i]);
  359. format(Query2, sizeof(Query2), "%s,'%s'", Query2, str[i]);
  360. }
  361. }
  362. case 'd':
  363. {
  364. if(i == 0)
  365. {
  366. format(Query1, sizeof(Query1), "`%s`", f[i]);
  367. format(Query2, sizeof(Query2), "%d", in[i]);
  368. }
  369. else
  370. {
  371. format(Query1, sizeof(Query1), "%s,`%s`", Query1, f[i]);
  372. format(Query2, sizeof(Query2), "%s,%d", Query2, in[i]);
  373. }
  374. }
  375. case 'f':
  376. {
  377. if(i == 0)
  378. {
  379. format(Query1, sizeof(Query1), "`%s`", f[i]);
  380. format(Query2, sizeof(Query2), "%f", pi[i]);
  381. }
  382. else
  383. {
  384. format(Query1, sizeof(Query1), "%s,`%s`", Query1, f[i]);
  385. format(Query2, sizeof(Query2), "%s,%f", Query2, pi[i]);
  386. }
  387. }
  388. }
  389. }
  390. format(Query, sizeof(Query), "INSERT INTO `%s`(%s) VALUES (%s)", table, Query1, Query2);
  391. db_query(USERDB,Query);
  392. return 1;
  393. }
  394.  
  395. stock r_split(const strsrc[], strdest[][], delimiter) //Wiki
  396. {
  397. new i, li;
  398. new aNum;
  399. new len;
  400. while(i <= strlen(strsrc))
  401. {
  402. if(strsrc[i] == delimiter || i == strlen(strsrc))
  403. {
  404. len = strmid(strdest[aNum], strsrc, li, i, 128);
  405. strdest[aNum][len] = 0;
  406. li = i+1;
  407. aNum++;
  408. }
  409. i++;
  410. }
  411. return 1;
  412. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement