sunny123456

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

OracleHelper--> Oracle数据库连接类及测试

请先下载对应的 odp.net 的dll, 放在 bin 目录下面。 下载地址:点击打开链接


1. OracleHelper.cs 

  1. using System;
  2. using System.Data;
  3. using Oracle.DataAccess.Client;
  4. namespace Utils
  5. {
  6. /// <summary>
  7. /// Desciption: Oracle数据库访问类 (注:针对 odp.net ).
  8. /// Author : yenange
  9. /// Date : 2013-09-21
  10. /// </summary>
  11. public static class OracleHelper
  12. {
  13. #region [ 连接对象 ]
  14. /// <summary>
  15. /// 连接对象 字段
  16. /// </summary>
  17. private static OracleConnection conn = null;
  18. /// <summary>
  19. /// 连接串 字段
  20. /// </summary>
  21. //private static string connstr = @"Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=localhost)(PORT=1521)))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=ORCL)));User Id=leaf;Password=leaf;";
  22. private static string connstr = @"Data Source=localhost/ORCL;Persist Security Info=True;User ID=leaf;Password=leaf;";
  23. /// <summary>
  24. /// 取得连接串
  25. /// </summary>
  26. public static string GetConnectionString
  27. {
  28. get
  29. {
  30. return connstr;
  31. }
  32. }
  33. /// <summary>
  34. /// 取得连接对象, 没有打开
  35. /// </summary>
  36. public static OracleConnection GetOracleConnection
  37. {
  38. get
  39. {
  40. return new OracleConnection(GetConnectionString);
  41. }
  42. }
  43. /// <summary>
  44. /// 取得连接对象, 并打开
  45. /// </summary>
  46. public static OracleConnection GetOracleConnectionAndOpen
  47. {
  48. get
  49. {
  50. OracleConnection conn = GetOracleConnection;
  51. conn.Open();
  52. return conn;
  53. }
  54. }
  55. /// <summary>
  56. /// 彻底关闭并释放 OracleConnection 对象,再置为null.
  57. /// </summary>
  58. /// <param name="conn">OracleConnection</param>
  59. public static void CloseOracleConnection(OracleConnection conn)
  60. {
  61. if (conn == null)
  62. return;
  63. conn.Close();
  64. conn.Dispose();
  65. conn = null;
  66. }
  67. #endregion
  68. #region [ ExecuteNonQuery ]
  69. /// <summary>
  70. /// 普通SQL语句执行增删改
  71. /// </summary>
  72. /// <param name="cmdText">SQL语句</param>
  73. /// <param name="commandParameters">可变参数</param>
  74. /// <returns>受影响行数</returns>
  75. public static int ExecuteNonQuery(string cmdText, params OracleParameter[] commandParameters)
  76. {
  77. return ExecuteNonQuery(cmdText, CommandType.Text, commandParameters);
  78. }
  79. /// <summary>
  80. /// 存储过程执行增删改
  81. /// </summary>
  82. /// <param name="cmdText">存储过程</param>
  83. /// <param name="commandParameters">可变参数</param>
  84. /// <returns>受影响行数</returns>
  85. public static int ExecuteNonQueryByProc(string cmdText, params OracleParameter[] commandParameters)
  86. {
  87. return ExecuteNonQuery(cmdText, CommandType.StoredProcedure, commandParameters);
  88. }
  89. /// <summary>
  90. /// 执行增删改
  91. /// </summary>
  92. /// <param name="cmdText">命令字符串</param>
  93. /// <param name="cmdType">命令类型</param>
  94. /// <param name="commandParameters">可变参数</param>
  95. /// <returns>受影响行数</returns>
  96. public static int ExecuteNonQuery(string cmdText, CommandType cmdType, params OracleParameter[] commandParameters)
  97. {
  98. int result = 0;
  99. OracleConnection conn = null;
  100. try
  101. {
  102. conn = GetOracleConnectionAndOpen;
  103. OracleCommand command = new OracleCommand();
  104. PrepareCommand(command, conn, cmdType, cmdText, commandParameters);
  105. result = command.ExecuteNonQuery();
  106. }
  107. catch (Exception ex)
  108. {
  109. result = -1;
  110. }
  111. finally
  112. {
  113. if (conn != null)
  114. CloseOracleConnection(conn);
  115. }
  116. return result;
  117. }
  118. #endregion
  119. #region [ ExecuteReader ]
  120. /// <summary>
  121. /// SQL语句得到 OracleDataReader 对象
  122. /// </summary>
  123. /// <param name="cmdText">命令字符串</param>
  124. /// <param name="commandParameters">可变参数</param>
  125. /// <returns>OracleDataReader 对象</returns>
  126. public static OracleDataReader ExecuteReader(string cmdText, params OracleParameter[] commandParameters)
  127. {
  128. return ExecuteReader(cmdText, CommandType.Text, commandParameters);
  129. }
  130. /// <summary>
  131. /// 存储过程得到 OracleDataReader 对象
  132. /// </summary>
  133. /// <param name="cmdText">命令字符串</param>
  134. /// <param name="commandParameters">可变参数</param>
  135. /// <returns>OracleDataReader 对象</returns>
  136. public static OracleDataReader ExecuteReaderByProc(string cmdText, params OracleParameter[] commandParameters)
  137. {
  138. return ExecuteReader(cmdText, CommandType.StoredProcedure, commandParameters);
  139. }
  140. /// <summary>
  141. /// 得到 OracleDataReader 对象
  142. /// </summary>
  143. /// <param name="cmdText">命令字符串</param>
  144. /// <param name="cmdType">命令类型</param>
  145. /// <param name="commandParameters">可变参数</param>
  146. /// <returns>OracleDataReader 对象</returns>
  147. public static OracleDataReader ExecuteReader(string cmdText, CommandType cmdType, params OracleParameter[] commandParameters)
  148. {
  149. OracleDataReader result = null;
  150. OracleConnection conn = null;
  151. try
  152. {
  153. conn = GetOracleConnectionAndOpen;
  154. OracleCommand command = new OracleCommand();
  155. PrepareCommand(command, conn, cmdType, cmdText, commandParameters);
  156. result = command.ExecuteReader(CommandBehavior.CloseConnection);
  157. }
  158. catch (Exception ex)
  159. {
  160. result = null;
  161. }
  162. finally
  163. {
  164. if (conn != null)
  165. CloseOracleConnection(conn);
  166. }
  167. return result;
  168. }
  169. #endregion
  170. #region [ ExecuteScalar ]
  171. /// <summary>
  172. /// 执行SQL语句, 返回Object
  173. /// </summary>
  174. /// <param name="cmdText">命令字符串</param>
  175. /// <param name="commandParameters">可变参数</param>
  176. /// <returns> Object </returns>
  177. public static Object ExecuteScalar(string cmdText, params OracleParameter[] commandParameters)
  178. {
  179. return ExecuteScalar(cmdText, CommandType.Text, commandParameters);
  180. }
  181. /// <summary>
  182. /// 执行存储过程, 返回Object
  183. /// </summary>
  184. /// <param name="cmdText">命令字符串</param>
  185. /// <param name="commandParameters">可变参数</param>
  186. /// <returns> Object </returns>
  187. public static Object ExecuteScalarByProc(string cmdText, params OracleParameter[] commandParameters)
  188. {
  189. return ExecuteScalar(cmdText, CommandType.StoredProcedure, commandParameters);
  190. }
  191. /// <summary>
  192. /// 返回Object
  193. /// </summary>
  194. /// <param name="cmdText">命令字符串</param>
  195. /// <param name="cmdType">命令类型</param>
  196. /// <param name="commandParameters">可变参数</param>
  197. /// <returns> Object </returns>
  198. public static Object ExecuteScalar(string cmdText, CommandType cmdType, params OracleParameter[] commandParameters)
  199. {
  200. Object result = null;
  201. OracleConnection conn = null;
  202. try
  203. {
  204. conn = GetOracleConnectionAndOpen;
  205. OracleCommand command = new OracleCommand();
  206. PrepareCommand(command, conn, cmdType, cmdText, commandParameters);
  207. result = command.ExecuteScalar();
  208. }
  209. catch (Exception ex)
  210. {
  211. result = null;
  212. }
  213. finally
  214. {
  215. if (conn != null)
  216. CloseOracleConnection(conn);
  217. }
  218. return result;
  219. }
  220. #endregion
  221. #region [ ExecuteDataSet ]
  222. /// <summary>
  223. /// 执行SQL语句, 返回DataSet
  224. /// </summary>
  225. /// <param name="cmdText">命令字符串</param>
  226. /// <param name="commandParameters">可变参数</param>
  227. /// <returns> DataSet </returns>
  228. public static DataSet ExecuteDataSet(string cmdText, params OracleParameter[] commandParameters)
  229. {
  230. return ExecuteDataSet(cmdText, CommandType.Text, commandParameters);
  231. }
  232. /// <summary>
  233. /// 执行存储过程, 返回DataSet
  234. /// </summary>
  235. /// <param name="cmdText">命令字符串</param>
  236. /// <param name="commandParameters">可变参数</param>
  237. /// <returns> DataSet </returns>
  238. public static DataSet ExecuteDataSetByProc(string cmdText, params OracleParameter[] commandParameters)
  239. {
  240. return ExecuteDataSet(cmdText, CommandType.StoredProcedure, commandParameters);
  241. }
  242. /// <summary>
  243. /// 返回DataSet
  244. /// </summary>
  245. /// <param name="cmdText">命令字符串</param>
  246. /// <param name="cmdType">命令类型</param>
  247. /// <param name="commandParameters">可变参数</param>
  248. /// <returns> DataSet </returns>
  249. public static DataSet ExecuteDataSet(string cmdText, CommandType cmdType, params OracleParameter[] commandParameters)
  250. {
  251. DataSet result = null;
  252. OracleConnection conn = null;
  253. try
  254. {
  255. conn = GetOracleConnectionAndOpen;
  256. OracleCommand command = new OracleCommand();
  257. PrepareCommand(command, conn, cmdType, cmdText, commandParameters);
  258. OracleDataAdapter adapter = new OracleDataAdapter();
  259. adapter.SelectCommand = command;
  260. result = new DataSet();
  261. adapter.Fill(result);
  262. }
  263. catch (Exception ex)
  264. {
  265. result = null;
  266. }
  267. finally
  268. {
  269. if (conn != null)
  270. CloseOracleConnection(conn);
  271. }
  272. return result;
  273. }
  274. #endregion
  275. #region [ ExecuteDataTable ]
  276. /// <summary>
  277. /// 执行SQL语句, 返回DataTable
  278. /// </summary>
  279. /// <param name="cmdText">命令字符串</param>
  280. /// <param name="commandParameters">可变参数</param>
  281. /// <returns> DataTable </returns>
  282. public static DataTable ExecuteDataTable(string cmdText, params OracleParameter[] commandParameters)
  283. {
  284. return ExecuteDataTable(cmdText, CommandType.Text , commandParameters);
  285. }
  286. /// <summary>
  287. /// 执行存储过程, 返回DataTable
  288. /// </summary>
  289. /// <param name="cmdText">命令字符串</param>
  290. /// <param name="commandParameters">可变参数</param>
  291. /// <returns> DataTable </returns>
  292. public static DataTable ExecuteDataTableByProc(string cmdText, params OracleParameter[] commandParameters)
  293. {
  294. return ExecuteDataTable(cmdText, CommandType.StoredProcedure, commandParameters);
  295. }
  296. /// <summary>
  297. /// 返回DataTable
  298. /// </summary>
  299. /// <param name="cmdText">命令字符串</param>
  300. /// <param name="cmdType">命令类型</param>
  301. /// <param name="commandParameters">可变参数</param>
  302. /// <returns> DataTable </returns>
  303. public static DataTable ExecuteDataTable(string cmdText, CommandType cmdType, params OracleParameter[] commandParameters)
  304. {
  305. DataTable dtResult = null;
  306. DataSet ds = ExecuteDataSet(cmdText, cmdType, commandParameters);
  307. if (ds != null && ds.Tables.Count > 0)
  308. {
  309. dtResult = ds.Tables[0];
  310. }
  311. return dtResult;
  312. }
  313. #endregion
  314. #region [ PrepareCommand ]
  315. /// <summary>
  316. /// Command对象执行前预处理
  317. /// </summary>
  318. /// <param name="command"></param>
  319. /// <param name="connection"></param>
  320. /// <param name="trans"></param>
  321. /// <param name="cmdType"></param>
  322. /// <param name="cmdText"></param>
  323. /// <param name="commandParameters"></param>
  324. private static void PrepareCommand(OracleCommand command, OracleConnection connection, CommandType cmdType, string cmdText, OracleParameter[] commandParameters)
  325. {
  326. try
  327. {
  328. if (connection.State != ConnectionState.Open) connection.Open();
  329. command.Connection = connection;
  330. command.CommandText = cmdText;
  331. command.CommandType = cmdType;
  332. //if (trans != null) command.Transaction = trans;
  333. if (commandParameters != null)
  334. {
  335. foreach (OracleParameter parm in commandParameters)
  336. command.Parameters.Add(parm);
  337. }
  338. }
  339. catch
  340. {
  341. }
  342. }
  343. #endregion
  344. }//end of class
  345. }//end of namespace


2. 测试类

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Text;
  4. using Oracle.DataAccess.Client;
  5. using System.Data;
  6. using Utils;
  7. namespace OracleForNet
  8. {
  9. class Program
  10. {
  11. static void Main(string[] args)
  12. {
  13. try
  14. {
  15. using (OracleConnection conn = Utils.OracleHelper.GetOracleConnectionAndOpen)
  16. {
  17. if (conn.State == ConnectionState.Open)
  18. {
  19. Console.WriteLine("打开连接成功!");
  20. }
  21. }
  22. }
  23. catch (Exception ex)
  24. {
  25. Console.WriteLine("出现异常, 异常信息: " + ex.Message);
  26. }
  27. Console.Read();
  28. }
  29. }//end of class
  30. }//end of namespace

https://blog.csdn.net/yenange/article/details/11880479
posted on 2022-08-16 22:02  sunny123456  阅读(165)  评论(0编辑  收藏  举报