Guest User

Untitled

a guest
Nov 22nd, 2017
128
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.47 KB | None | 0 0
  1. /*
  2. * Created by SharpDevelop.
  3. * User: cpereira7
  4. * Date: 08-11-2015
  5. * Time: 20:06
  6. * C#, Npgsql
  7. */
  8. using System;
  9. using System.Data;
  10. using System.Diagnostics;
  11. using Npgsql;
  12. using NpgsqlTypes;
  13. using System.Linq;
  14.  
  15. namespace Biblioteca_2
  16. {
  17. /// <summary>
  18. /// Select data from Postgres Database using Npgsql
  19. /// </summary>
  20. public static class SQLPostgres
  21. {
  22. static readonly NpgsqlConnection connection = new NpgsqlConnection("Server=127.0.0.1;Port=5432;CommandTimeout=5000;User Id=postgres;" +
  23. "Password=pwd;Database=dbName;");
  24.  
  25. /// <summary>
  26. /// Runs a query on the database. Warning: Don't use for user direct inputs!
  27. /// </summary>
  28. /// <param name="query">Query to execute.</param>
  29. public static void RunQuery(string query)
  30. {
  31. connection.Open();
  32.  
  33. // Define a query
  34. NpgsqlCommand cmd = new NpgsqlCommand(query, connection);
  35.  
  36. // Execute a query
  37. NpgsqlDataReader dr = cmd.ExecuteReader();
  38.  
  39. connection.Close();
  40. }
  41.  
  42. /// <summary>
  43. /// Get data from a simple query. No params needed.
  44. /// </summary>
  45. /// <param name="query">Query to execute. Example: select * from sales</param>
  46. /// <returns></returns>
  47. public static DataTable SelectData(string query)
  48. {
  49. connection.Open();
  50. using (var cmd = new NpgsqlCommand(query, connection))
  51. {
  52. cmd.Prepare();
  53.  
  54. NpgsqlDataAdapter da = new NpgsqlDataAdapter(cmd);
  55.  
  56. DataSet _ds = new DataSet();
  57. DataTable _dt = new DataTable();
  58.  
  59. da.Fill(_ds);
  60.  
  61. try
  62. {
  63. _dt = _ds.Tables[0];
  64. }
  65. catch (Exception ex)
  66. {
  67. Debug.WriteLine("Erro: ---> " + ex.Message);
  68. }
  69.  
  70. connection.Close();
  71. return _dt;
  72. }
  73.  
  74. }
  75.  
  76. /// <summary>
  77. /// Get data a DataTable from a query with params.
  78. /// </summary>
  79. /// <param name="query">Query to execute. Example: select * from sales where product = @prodId</param>
  80. /// <param name="paramName">Param name. Example: "prodId"</param>
  81. /// <param name="paramValue">Param value. Example: (int)15</param>
  82. /// <returns></returns>
  83. public static DataTable SelectData(string query, string paramName, object paramValue)
  84. {
  85. connection.Open();
  86. using (var cmd = new NpgsqlCommand(query, connection))
  87. {
  88. cmd.Parameters.AddWithValue(paramName, paramValue);
  89.  
  90. NpgsqlDataAdapter da = new NpgsqlDataAdapter(cmd);
  91.  
  92. DataSet _ds = new DataSet();
  93. DataTable _dt = new DataTable();
  94.  
  95. da.Fill(_ds);
  96.  
  97. try
  98. {
  99. _dt = _ds.Tables[0];
  100. }
  101. catch (Exception ex)
  102. {
  103. Debug.WriteLine("Error: ---> " + ex.Message);
  104. }
  105.  
  106. connection.Close();
  107. return _dt;
  108. }
  109. }
  110.  
  111. /// <summary>
  112. /// Get a DataTable from a query with params.
  113. /// </summary>
  114. /// <param name="query">Query to execute. Example: select * from sales where product = @prodId</param>
  115. /// <param name="paramName">Param name. Example: "prodId"</param>
  116. /// <param name="paramType">Param type. Needed to enable prepare query.</param>
  117. /// <param name="paramValue">Param value. Example: (int)15</param>
  118. /// <returns></returns>
  119. public static DataTable SelectData(string query, string paramName, NpgsqlDbType paramType, object paramValue)
  120. {
  121. connection.Open();
  122. using (var cmd = new NpgsqlCommand(query, connection))
  123. {
  124. cmd.Parameters.AddWithValue(paramName, paramType ,paramValue);
  125.  
  126. //PREPARE creates a prepared statement.
  127. //A prepared statement is a server-side object that can be used to optimize performance.
  128. cmd.Prepare();
  129.  
  130. NpgsqlDataAdapter da = new NpgsqlDataAdapter(cmd);
  131.  
  132. DataSet _ds = new DataSet();
  133. DataTable _dt = new DataTable();
  134.  
  135. da.Fill(_ds);
  136.  
  137. try
  138. {
  139. _dt = _ds.Tables[0];
  140. }
  141. catch (Exception ex)
  142. {
  143. Debug.WriteLine("Error: ---> " + ex.Message);
  144. }
  145.  
  146. connection.Close();
  147. return _dt;
  148. }
  149.  
  150. }
  151.  
  152.  
  153. /// <summary>
  154. /// Get data a DataTable from a query with multiple params.
  155. /// </summary>
  156. /// <param name="query">Query to execute. Example: select * from sales where product = @prodId and sale_date = @date</param>
  157. /// <param name="paramName">Param name. Example: []{"prodId". "qtd"}</param>
  158. /// <param name="paramValue">Param value. Example: []{(int)15,(DateTime)"2017-01-01"}</param>
  159. /// <returns></returns>
  160. public static DataTable SelectData(string query, string[] paramName, object[] paramValue)
  161. {
  162. connection.Open();
  163. using (var cmd = new NpgsqlCommand(query, connection))
  164. {
  165. //Verify if the name's count equals the value's count
  166. if (paramName.Count() != paramValue.Count())
  167. {
  168. Debug.WriteLine("ParamName Count != ParamValue Count");
  169. return null;
  170. }
  171.  
  172. //Add params in the arrays
  173. for (int i = 0; i < paramName.Count() ; i++) {
  174. cmd.Parameters.AddWithValue(paramName[i], paramValue[i]);
  175. }
  176.  
  177.  
  178. NpgsqlDataAdapter da = new NpgsqlDataAdapter(cmd);
  179.  
  180. DataSet _ds = new DataSet();
  181. DataTable _dt = new DataTable();
  182.  
  183. da.Fill(_ds);
  184.  
  185. try
  186. {
  187. _dt = _ds.Tables[0];
  188. }
  189. catch (Exception ex)
  190. {
  191. Debug.WriteLine("Error: ---> " + ex.Message);
  192. }
  193.  
  194. connection.Close();
  195. return _dt;
  196. }
  197. }
  198.  
  199. /// <summary>
  200. /// Get data a DataTable from a query with multiple params.
  201. /// </summary>
  202. /// <param name="query">Query to execute. Example: select * from sales where product = @prodId and sale_date = @date</param>
  203. /// <param name="paramName">Param name. Example: []{"prodId". "qtd"}</param>
  204. /// <param name = "paramType">Param type. Example: []{NpgsqlDbType.Integrer, NpgsqlDbType.Date}</param>
  205. /// <param name="paramValue">Param value. Example: []{(int)15,(DateTime)"2017-01-01"}</param>
  206. /// <returns></returns>
  207. public static DataTable SelectData(string query, string[] paramName, NpgsqlDbType[] paramType, object[] paramValue)
  208. {
  209. connection.Open();
  210. using (var cmd = new NpgsqlCommand(query, connection))
  211. {
  212. if (paramName.Count() != paramValue.Count() || paramValue.Count() != paramType.Count())
  213. {
  214. Debug.WriteLine("ParamName Count != ParamValue Count");
  215. return null;
  216. }
  217.  
  218. for (int i = 0; i < paramName.Count(); i++) {
  219. cmd.Parameters.AddWithValue(paramName[i], paramType[i], paramValue[i]);
  220. }
  221.  
  222.  
  223. cmd.Prepare();
  224.  
  225. NpgsqlDataAdapter da = new NpgsqlDataAdapter(cmd);
  226.  
  227. DataSet _ds = new DataSet();
  228. DataTable _dt = new DataTable();
  229.  
  230. da.Fill(_ds);
  231.  
  232. try
  233. {
  234. _dt = _ds.Tables[0];
  235. }
  236. catch (Exception ex)
  237. {
  238. Debug.WriteLine("Error: ---> " + ex.Message);
  239. }
  240.  
  241. connection.Close();
  242. return _dt;
  243. }
  244.  
  245. }
  246.  
  247.  
  248. }
  249. }
Add Comment
Please, Sign In to add comment