Advertisement
Guest User

Untitled

a guest
Nov 29th, 2016
70
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.84 KB | None | 0 0
  1. -- connection settings
  2. local hostname = "localhost"
  3. local username ="root"
  4. local password = "ZTI3ZTM2MjMyMTU"
  5. local database = "SFL"
  6. local port = 3306
  7.  
  8. -- global things.
  9. local MySQLConnection = nil
  10. local resultPool = { }
  11. local sqllog = false
  12. local countqueries = 0
  13.  
  14. -- connectToDatabase - Internal function, to spawn a DB connection
  15. function connectToDatabase(res)
  16. MySQLConnection = mysql_connect(hostname, username, password, database, port)
  17.  
  18. if (not MySQLConnection) then
  19. if (res == getThisResource()) then
  20. cancelEvent(true, "Cannot connect to the database.")
  21. end
  22. return nil
  23. end
  24.  
  25. return nil
  26. end
  27. addEventHandler("onResourceStart", getResourceRootElement(getThisResource()), connectToDatabase, false)
  28.  
  29. -- destroyDatabaseConnection - Internal function, kill the connection if theres one.
  30. function destroyDatabaseConnection()
  31. if (not MySQLConnection) then
  32. return nil
  33. end
  34. mysql_close(MySQLConnection)
  35. return nil
  36. end
  37. addEventHandler("onResourceStop", getResourceRootElement(getThisResource()), destroyDatabaseConnection, false)
  38.  
  39. -- do something usefull here
  40. function logSQLError(str)
  41. local message = str or 'N/A'
  42. outputDebugString("MYSQL ERROR "..mysql_errno(MySQLConnection) .. ": " .. mysql_error(MySQLConnection))
  43. exports['logs']:logMessage("MYSQL ERROR :O! [QUERY] " .. message .. " [ERROR] " .. mysql_errno(MySQLConnection) .. ": " .. mysql_error(MySQLConnection), 24)
  44. end
  45.  
  46. function getFreeResultPoolID()
  47. local size = #resultPool
  48. if (size == 0) then
  49. return 1
  50. end
  51. for index, query in ipairs(resultPool) do
  52. if (query == nil) then
  53. return index
  54. end
  55. end
  56. return (size + 1)
  57. end
  58.  
  59. ------------ EXPORTED FUNCTIONS ---------------
  60.  
  61. function ping()
  62. if (mysql_ping(MySQLConnection) == false) then
  63. -- FUU, NO MOAR CONNECTION
  64. destroyDatabaseConnection()
  65. connectToDatabase(nil)
  66. if (mysql_ping(MySQLConnection) == false) then
  67. logSQLError()
  68. return false
  69. end
  70. return true
  71. end
  72.  
  73. return true
  74. end
  75.  
  76. function escape_string(str)
  77. if (ping()) then
  78. return mysql_escape_string(MySQLConnection, str)
  79. end
  80. return false
  81. end
  82.  
  83. function query(str)
  84. if sqllog then
  85. exports['logs']:logMessage(str, 24)
  86. end
  87. countqueries = countqueries + 1
  88.  
  89. if (ping()) then
  90. local result = mysql_query(MySQLConnection, str)
  91. if (not result) then
  92. logSQLError(str)
  93. return false
  94. end
  95.  
  96. local resultid = getFreeResultPoolID()
  97. resultPool[resultid] = result
  98. return resultid
  99. end
  100. return false
  101. end
  102.  
  103. function unbuffered_query(str)
  104. if sqllog then
  105. exports['logs']:logMessage(str, 24)
  106. end
  107. countqueries = countqueries + 1
  108.  
  109. if (ping()) then
  110. local result = mysql_unbuffered_query(MySQLConnection, str)
  111. if (not result) then
  112. logSQLError(str)
  113. return false
  114. end
  115.  
  116. local resultid = getFreeResultPoolID()
  117. resultPool[resultid] = result
  118. return resultid
  119. end
  120. return false
  121. end
  122.  
  123. function query_free(str)
  124. local queryresult = query(str)
  125. if not (queryresult == false) then
  126. free_result(queryresult)
  127. return true
  128. end
  129. return false
  130. end
  131.  
  132. function rows_assoc(resultid)
  133. if (not resultPool[resultid]) then
  134. return false
  135. end
  136. return mysql_rows_assoc(resultPool[resultid])
  137. end
  138.  
  139. function fetch_assoc(resultid)
  140. if (not resultPool[resultid]) then
  141. return false
  142. end
  143. return mysql_fetch_assoc(resultPool[resultid])
  144. end
  145.  
  146. function free_result(resultid)
  147. if (not resultPool[resultid]) then
  148. return false
  149. end
  150. mysql_free_result(resultPool[resultid])
  151. table.remove(resultPool, resultid)
  152. return nil
  153. end
  154.  
  155. -- incase a nub wants to use it, FINE
  156. function result(resultid, row_offset, field_offset)
  157. if (not resultPool[resultid]) then
  158. return false
  159. end
  160. return mysql_result(resultPool[resultid], row_offset, field_offset)
  161. end
  162.  
  163. function num_rows(resultid)
  164. if (not resultPool[resultid]) then
  165. return false
  166. end
  167. return mysql_num_rows(resultPool[resultid])
  168.  
  169. end
  170.  
  171. function insert_id()
  172. return mysql_insert_id(MySQLConnection) or false
  173. end
  174.  
  175. function query_fetch_assoc(str)
  176. local queryresult = query(str)
  177. if not (queryresult == false) then
  178. local result = fetch_assoc(queryresult)
  179. free_result(queryresult)
  180. return result
  181. end
  182. return false
  183. end
  184.  
  185. function query_rows_assoc(str)
  186. local queryresult = query(str)
  187. if not (queryresult == false) then
  188. local result = rows_assoc(queryresult)
  189. free_result(queryresult)
  190. return result
  191. end
  192. return false
  193. end
  194.  
  195. function query_insert_free(str)
  196. local queryresult = query(str)
  197. if not (queryresult == false) then
  198. local result = insert_id()
  199. free_result(queryresult)
  200. return result
  201. end
  202. return false
  203. end
  204.  
  205. function escape_string(str)
  206. return mysql_escape_string(MySQLConnection, str)
  207. end
  208.  
  209. function debugMode()
  210. if (sqllog) then
  211. sqllog = false
  212. else
  213. sqllog = true
  214. end
  215. return sqllog
  216. end
  217.  
  218. function returnQueryStats()
  219. return countqueries
  220. -- maybe later more
  221. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement