Advertisement
Guest User

Untitled

a guest
Jan 9th, 2017
136
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.32 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.  
  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. foreach (KeyValuePair<string, string> entry in parameters)
  101. {
  102. cmd.Parameters.AddWithValue(entry.Key, entry.Value);
  103. }
  104. cmd.ExecuteNonQuery();
  105. }
  106. catch (Exception ex)
  107. {
  108. API.consoleOutput("DATABASE: [ERROR] " + ex.ToString());
  109. }
  110. }
  111. }
  112.  
  113. public DataTable createDataTable(string sql, string unique_name)
  114. {
  115. using (MySqlConnection conn = new MySqlConnection(connStr))
  116. {
  117. try
  118. {
  119. MySqlDataAdapter dataAdapter;
  120. DataTable dataTable;
  121. dataAdapter = new MySqlDataAdapter(sql, conn);
  122. MySqlCommandBuilder cb = new MySqlCommandBuilder(dataAdapter);
  123. dataAdapters[unique_name] = dataAdapter;
  124. dataTable = new DataTable();
  125. dataAdapter.Fill(dataTable);
  126. return dataTable;
  127. }
  128. catch (Exception ex)
  129. {
  130. API.consoleOutput("DATABASE: [ERROR] " + ex.ToString());
  131. return null;
  132. }
  133. }
  134. }
  135.  
  136. public void updateDataTable(string unique_name, DataTable updatedTable)
  137. {
  138. try
  139. {
  140. dataAdapters[unique_name].Update(updatedTable);
  141. }
  142. catch (Exception ex)
  143. {
  144. API.consoleOutput("DATABASE: [ERROR] " + ex.ToString());
  145. }
  146. }
  147.  
  148. public void closeDataTable(string unique_name)
  149. {
  150. try
  151. {
  152. MySqlDataAdapter data = dataAdapters[unique_name];
  153. dataAdapters.Remove(unique_name);
  154. data.Dispose();
  155. }
  156. catch (Exception ex)
  157. {
  158. API.consoleOutput("DATABASE: [ERROR] " + ex.ToString());
  159. }
  160. }
  161.  
  162. /* Hooks */
  163.  
  164. public void onResourceStart()
  165. {
  166. dataAdapters = new Dictionary<string, MySqlDataAdapter>();
  167. var authentication = "";
  168. if(API.getSetting<bool>("database_using_ssl"))
  169. {
  170. authentication = ";CertificateFile=" + API.getSetting<string>("database_ssl_pfx_file") +
  171. ";CertificatePassword=" + API.getSetting<string>("database_ssl_pfx_password");
  172. }
  173. else
  174. {
  175. authentication = ";password=" + API.getSetting<string>("database_password");
  176. }
  177. connStr = "server=" + API.getSetting<string>("database_server") +
  178. ";user=" + API.getSetting<string>("database_user") +
  179. ";database=" + API.getSetting<string>("database_database") +
  180. ";port=" + API.getSetting<string>("database_port") +
  181. authentication +
  182. ";min pool size=" + API.getSetting<string>("database_min_pool_size") +
  183. ";max pool size=" + API.getSetting<int>("database_max_pool_size") + ";";
  184. using (MySqlConnection conn = new MySqlConnection(connStr))
  185. {
  186. try
  187. {
  188. API.consoleOutput("DATABASE: [INFO] Attempting connecting to MySQL");
  189. conn.Open();
  190. if (conn.State == ConnectionState.Open)
  191. {
  192. API.consoleOutput("DATABASE: [INFO] Connected to MySQL");
  193. }
  194. }
  195. catch (Exception ex)
  196. {
  197. API.consoleOutput("DATABASE: [ERROR] " + ex.ToString());
  198. }
  199.  
  200. }
  201. }
  202.  
  203. public void onResourceStop()
  204. {
  205. API.consoleOutput("DATABASE: [INFO] MySQL connection closed");
  206. }
  207. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement