Advertisement
Guest User

Untitled

a guest
Apr 9th, 2017
112
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.40 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Data;
  4. using MySql.Data;
  5. using MySql.Data.MySqlClient;
  6. using GTANetworkServer;
  7. using GTANetworkShared;
  8.  
  9. public class Database : Script
  10. {
  11.  
  12. /* Variables */
  13. string connStr;
  14. Dictionary<string, MySqlDataAdapter> dataAdapters;
  15.  
  16. /* Constructor */
  17.  
  18. public Database()
  19. {
  20. API.onResourceStart += onResourceStart;
  21. API.onResourceStop += onResourceStop;
  22. }
  23.  
  24. /* Exports */
  25.  
  26. public DataTable executeQueryWithResult(string sql)
  27. {
  28. using (MySqlConnection conn = new MySqlConnection(connStr))
  29. {
  30. try
  31. {
  32. MySqlCommand cmd = new MySqlCommand(sql, conn);
  33. conn.Open();
  34. MySqlDataReader rdr = cmd.ExecuteReader();
  35. DataTable results = new DataTable();
  36. results.Load(rdr);
  37. rdr.Close();
  38. return results;
  39. }
  40. catch (Exception ex)
  41. {
  42. API.consoleOutput("DATABASE: [ERROR] " + ex.ToString());
  43. return null;
  44. }
  45. }
  46. }
  47.  
  48. public DataTable executePreparedQueryWithResult(string sql, Dictionary<string, string> parameters)
  49. {
  50. using (MySqlConnection conn = new MySqlConnection(connStr))
  51. {
  52. try
  53. {
  54. MySqlCommand cmd = new MySqlCommand(sql, conn);
  55. conn.Open();
  56.  
  57. foreach (KeyValuePair<string, string> entry in parameters)
  58. {
  59. cmd.Parameters.AddWithValue(entry.Key, entry.Value);
  60. }
  61.  
  62. MySqlDataReader rdr = cmd.ExecuteReader();
  63. DataTable results = new DataTable();
  64. results.Load(rdr);
  65. rdr.Close();
  66. return results;
  67. }
  68. catch (Exception ex)
  69. {
  70. API.consoleOutput("DATABASE: [ERROR] " + ex.ToString());
  71. return null;
  72. }
  73. }
  74. }
  75.  
  76. public void executeQuery(string sql)
  77. {
  78. using (MySqlConnection conn = new MySqlConnection(connStr))
  79. {
  80. try
  81. {
  82. MySqlCommand cmd = new MySqlCommand(sql, conn);
  83. conn.Open();
  84. cmd.ExecuteNonQuery();
  85. }
  86. catch (Exception ex)
  87. {
  88. API.consoleOutput("DATABASE: [ERROR] " + ex.ToString());
  89. }
  90. }
  91. }
  92.  
  93. public void executePreparedQuery(string sql, Dictionary<string, string> parameters)
  94. {
  95. using (MySqlConnection conn = new MySqlConnection(connStr))
  96. {
  97. try
  98. {
  99. MySqlCommand cmd = new MySqlCommand(sql, conn);
  100. conn.Open();
  101. foreach (KeyValuePair<string, string> entry in parameters)
  102. {
  103. cmd.Parameters.AddWithValue(entry.Key, entry.Value);
  104. }
  105. cmd.ExecuteNonQuery();
  106. }
  107. catch (Exception ex)
  108. {
  109. API.consoleOutput("DATABASE: [ERROR] " + ex.ToString());
  110. }
  111. }
  112. }
  113.  
  114. public DataTable createDataTable(string sql, string unique_name)
  115. {
  116. using (MySqlConnection conn = new MySqlConnection(connStr))
  117. {
  118. try
  119. {
  120. MySqlDataAdapter dataAdapter;
  121. DataTable dataTable;
  122. dataAdapter = new MySqlDataAdapter(sql, conn);
  123. MySqlCommandBuilder cb = new MySqlCommandBuilder(dataAdapter);
  124. dataAdapters[unique_name] = dataAdapter;
  125. dataTable = new DataTable();
  126. dataAdapter.Fill(dataTable);
  127. return dataTable;
  128. }
  129. catch (Exception ex)
  130. {
  131. API.consoleOutput("DATABASE: [ERROR] " + ex.ToString());
  132. return null;
  133. }
  134. }
  135. }
  136.  
  137. public void updateDataTable(string unique_name, DataTable updatedTable)
  138. {
  139. try
  140. {
  141. dataAdapters[unique_name].Update(updatedTable);
  142. }
  143. catch (Exception ex)
  144. {
  145. API.consoleOutput("DATABASE: [ERROR] " + ex.ToString());
  146. }
  147. }
  148.  
  149. public void closeDataTable(string unique_name)
  150. {
  151. try
  152. {
  153. MySqlDataAdapter data = dataAdapters[unique_name];
  154. dataAdapters.Remove(unique_name);
  155. data.Dispose();
  156. }
  157. catch (Exception ex)
  158. {
  159. API.consoleOutput("DATABASE: [ERROR] " + ex.ToString());
  160. }
  161. }
  162.  
  163. /* Hooks */
  164.  
  165. public void onResourceStart()
  166. {
  167. dataAdapters = new Dictionary<string, MySqlDataAdapter>();
  168. var authentication = "";
  169. if (API.getSetting<bool>("database_using_ssl"))
  170. {
  171. authentication = ";CertificateFile=" + API.getSetting<string>("database_ssl_pfx_file") +
  172. ";CertificatePassword=" + API.getSetting<string>("database_ssl_pfx_password");
  173. }
  174. else
  175. {
  176. authentication = ";password=" + API.getSetting<string>("database_password");
  177. }
  178. connStr = "server=" + API.getSetting<string>("database_server") +
  179. ";user=" + API.getSetting<string>("database_user") +
  180. ";database=" + API.getSetting<string>("database_database") +
  181. ";port=" + API.getSetting<string>("database_port") +
  182. authentication +
  183. ";min pool size=" + API.getSetting<string>("database_min_pool_size") +
  184. ";max pool size=" + API.getSetting<int>("database_max_pool_size") + ";";
  185. using (MySqlConnection conn = new MySqlConnection(connStr))
  186. {
  187. try
  188. {
  189. API.consoleOutput("DATABASE: [INFO] Attempting connecting to MySQL");
  190. conn.Open();
  191. if (conn.State == ConnectionState.Open)
  192. {
  193. API.consoleOutput("DATABASE: [INFO] Connected to MySQL");
  194. }
  195. }
  196. catch (Exception ex)
  197. {
  198. API.consoleOutput("DATABASE: [ERROR] " + ex.ToString());
  199. }
  200.  
  201. }
  202. }
  203.  
  204. public void onResourceStop()
  205. {
  206. API.consoleOutput("DATABASE: [INFO] MySQL connection closed");
  207. }
  208. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement