华恒Mes鼎捷代码
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

253 lines
9.1 KiB

5 months ago
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Data;
  6. using ICSSoft.Base.Config.AppConfig;
  7. using ICSSoft.Base.Config.DBHelper;
  8. using Oracle.ManagedDataAccess.Client;
  9. namespace ICSSoft.Frame.Data.DAL
  10. {
  11. public class DBHelper_Oracle
  12. {
  13. public static string DBServerIP = "";
  14. public static string OracleSID = "";
  15. public static string DBUserName = "";
  16. public static string DBPassword = "";
  17. public static OracleCommand cmd = null;
  18. public static OracleConnection conn = null;
  19. public static string connstr = "[DB.PLM]";
  20. public DBHelper_Oracle()
  21. { }
  22. #region 建立Oracle数据库连接对象
  23. /// <returns>返回一个数据库连接的OracleConnection对象</returns>
  24. public static OracleConnection init()
  25. {
  26. try
  27. {
  28. GetDataBaseConnect();
  29. string connstr = "User Id={2};Password={3};Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST={0})(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME={1})))";
  30. connstr = string.Format(connstr, DBServerIP, OracleSID, DBUserName, DBPassword);
  31. conn = new OracleConnection(connstr);
  32. if (conn.State != ConnectionState.Open)
  33. {
  34. conn.Open();
  35. }
  36. }
  37. catch (Exception e)
  38. {
  39. throw new Exception(e.Message.ToString());
  40. }
  41. return conn;
  42. }
  43. #endregion
  44. #region 获取数据源连接符
  45. /// <summary>
  46. /// 数据源ID(GUID)
  47. /// </summary>
  48. /// <param name="dbId"></param>
  49. /// <returns></returns>
  50. public static void GetDataBaseConnect()
  51. {
  52. ICSSoft.Frame.Data.DAL.APPConfigForOracl.DBLinkClass item = ICSSoft.Frame.Data.DAL.APPConfigForOracl.AppConfig.GetDataBaseClass(connstr);
  53. if (item != null)
  54. {
  55. DBServerIP = item.DBIpAddress;
  56. OracleSID = item.DBName;
  57. DBUserName = item.DBUser;
  58. DBPassword = item.DBPwd;
  59. }
  60. }
  61. #endregion
  62. #region 设置OracleCommand对象
  63. /// <param name="cmd">OracleCommand对象 </param>
  64. /// <param name="cmdText">命令文本</param>
  65. /// <param name="cmdType">命令类型</param>
  66. /// <param name="cmdParms">参数集合</param>
  67. private static void SetCommand(OracleCommand cmd, string cmdText, CommandType cmdType, OracleParameter[] cmdParms)
  68. {
  69. cmd.Connection = conn;
  70. cmd.CommandText = cmdText;
  71. cmd.CommandType = cmdType;
  72. if (cmdParms != null)
  73. {
  74. cmd.Parameters.AddRange(cmdParms);
  75. }
  76. }
  77. #endregion
  78. #region 执行相应的Oracle sql语句,返回相应的DataSet对象
  79. /// <param name="sqlstr">sql语句</param>
  80. /// <returns>返回相应的DataSet对象</returns>
  81. public static DataSet GetDataSet(string sqlstr)
  82. {
  83. DataSet set = new DataSet();
  84. try
  85. {
  86. init();
  87. OracleDataAdapter adp = new OracleDataAdapter(sqlstr, conn);
  88. adp.Fill(set);
  89. conn.Close();
  90. }
  91. catch (Exception e)
  92. {
  93. throw new Exception(e.Message.ToString());
  94. }
  95. return set;
  96. }
  97. #endregion
  98. #region 执行sql语句,返回DataSet对象
  99. /// <param name="sqlstr">sql语句</param>
  100. /// <param name="tableName">表名</param>
  101. /// <returns>返回DataSet对象</returns>
  102. public static DataSet GetDataSet(string sqlstr, string tableName)
  103. {
  104. DataSet set = new DataSet();
  105. try
  106. {
  107. init();
  108. OracleDataAdapter adp = new OracleDataAdapter(sqlstr, conn);
  109. adp.Fill(set, tableName);
  110. conn.Close();
  111. }
  112. catch (Exception e)
  113. {
  114. throw new Exception(e.Message.ToString());
  115. }
  116. return set;
  117. }
  118. #endregion
  119. #region 执行不带参数的sql语句,返回受影响的行数
  120. /// <param name="cmdstr">增,删,改sql语句</param>
  121. /// <returns>返回受影响的行数</returns>
  122. public static int ExecuteNonQuery(string cmdText)
  123. {
  124. int count;
  125. try
  126. {
  127. init();
  128. cmd = new OracleCommand(cmdText, conn);
  129. count = cmd.ExecuteNonQuery();
  130. conn.Close();
  131. }
  132. catch (Exception ex)
  133. {
  134. throw new Exception(ex.Message.ToString());
  135. }
  136. return count;
  137. }
  138. #endregion
  139. #region 执行带参数的Oracle sql语句或存储过程,返回行数
  140. /// <param name="cmdText">带参数的sql语句和存储过程名</param>
  141. /// <param name="cmdType">命令类型</param>
  142. /// <param name="cmdParms">参数集合</param>
  143. /// <returns>返回受影响的行数</returns>
  144. public static int ExecuteNonQuery(string cmdText, CommandType cmdType, OracleParameter[] cmdParms)
  145. {
  146. int count;
  147. try
  148. {
  149. init();
  150. cmd = new OracleCommand();
  151. SetCommand(cmd, cmdText, cmdType, cmdParms);
  152. count = cmd.ExecuteNonQuery();
  153. cmd.Parameters.Clear();
  154. conn.Close();
  155. }
  156. catch (Exception ex)
  157. {
  158. throw new Exception(ex.Message.ToString());
  159. }
  160. return count;
  161. }
  162. #endregion
  163. #region 执行不带参数sql语句,返回一个从数据源读取数据的OracleDataReader对象
  164. /// <param name="cmdstr">相应的sql语句</param>
  165. /// <returns>返回一个从数据源读取数据的OracleDataReader对象</returns>
  166. public static OracleDataReader ExecuteReader(string cmdText)
  167. {
  168. OracleDataReader reader;
  169. try
  170. {
  171. init();
  172. cmd = new OracleCommand(cmdText, conn);
  173. reader = cmd.ExecuteReader(CommandBehavior.CloseConnection);
  174. }
  175. catch (Exception ex)
  176. {
  177. throw new Exception(ex.Message.ToString());
  178. }
  179. return reader;
  180. }
  181. #endregion
  182. #region 执行带参数的sql语句或存储过程,返回一个从数据源读取数据的OracleDataReader对象
  183. /// <param name="cmdText">sql语句或存储过程名</param>
  184. /// <param name="cmdType">命令类型</param>
  185. /// <param name="cmdParms">参数集合</param>
  186. /// <returns>返回一个从数据源读取数据的OracleDataReader对象</returns>
  187. public static OracleDataReader ExecuteReader(string cmdText, CommandType cmdType, OracleParameter[] cmdParms)
  188. {
  189. OracleDataReader reader;
  190. try
  191. {
  192. init();
  193. cmd = new OracleCommand();
  194. SetCommand(cmd, cmdText, cmdType, cmdParms);
  195. reader = cmd.ExecuteReader(CommandBehavior.CloseConnection);
  196. }
  197. catch (Exception ex)
  198. {
  199. throw new Exception(ex.Message.ToString());
  200. }
  201. return reader;
  202. }
  203. #endregion
  204. #region 执行不带参数sql语句,返回结果集首行首列的值object
  205. /// <param name="cmdstr">相应的sql语句</param>
  206. /// <returns>返回结果集首行首列的值object</returns>
  207. public static object ExecuteScalar(string cmdText)
  208. {
  209. object obj;
  210. try
  211. {
  212. init();
  213. cmd = new OracleCommand(cmdText, conn);
  214. obj = cmd.ExecuteScalar();
  215. conn.Close();
  216. }
  217. catch (Exception ex)
  218. {
  219. throw new Exception(ex.Message.ToString());
  220. }
  221. return obj;
  222. }
  223. #endregion
  224. #region 执行带参数sql语句或存储过程,返回结果集首行首列的值object
  225. /// <param name="cmdText">sql语句或存储过程名</param>
  226. /// <param name="cmdType">命令类型</param>
  227. /// <param name="cmdParms">返回结果集首行首列的值object</param>
  228. /// <returns></returns>
  229. public static object ExecuteScalar(string cmdText, CommandType cmdType, OracleParameter[] cmdParms)
  230. {
  231. object obj;
  232. try
  233. {
  234. init();
  235. cmd = new OracleCommand();
  236. SetCommand(cmd, cmdText, cmdType, cmdParms);
  237. obj = cmd.ExecuteScalar();
  238. conn.Close();
  239. }
  240. catch (Exception ex)
  241. {
  242. throw new Exception(ex.Message.ToString());
  243. }
  244. return obj;
  245. }
  246. #endregion
  247. }
  248. }