C# Oracle数据库操作类

C# Oracle数据库操作类

复制代码

  1 using System;
  2 using System.Data;
  3 using System.Collections.Generic;
  4 using System.Configuration;
  5 using System.Data.OracleClient;
  6 using System.Text;
  7 using System.IO;
  8 
  9 ///   
 10 /// Oracle数据库操作类  
 11 ///   
 12 public static class OracleHelper
 13 {
 14     ///   
 15     /// 执行数据库非查询操作,返回受影响的行数  
 16     ///   
 17     /// 数据库连接字符串
 18     /// 命令的类型
 19     /// Oracle存储过程名称或PL/SQL命令  
 20     /// 命令参数集合  
 21     /// 当前查询操作影响的数据行数  
 22     public static int ExecuteNonQuery(string connectionString, CommandType cmdType, string cmdText, params OracleParameter[] cmdParms)
 23     {
 24         OracleCommand cmd = new OracleCommand();
 25         using (OracleConnection conn = new OracleConnection(connectionString))
 26         {
 27             PrepareCommand(cmd, conn, null, cmdType, cmdText, cmdParms);
 28             int val = cmd.ExecuteNonQuery();
 29             cmd.Parameters.Clear();
 30             return val;
 31         }
 32     }
 33 
 34     ///   
 35     /// 执行数据库事务非查询操作,返回受影响的行数  
 36     ///   
 37     /// 数据库事务对象  
 38     /// Command类型  
 39     /// Oracle存储过程名称或PL/SQL命令  
 40     /// 命令参数集合  
 41     /// 当前事务查询操作影响的数据行数  
 42     public static int ExecuteNonQuery(OracleTransaction trans, CommandType cmdType, string cmdText, params OracleParameter[] cmdParms)
 43     {
 44         OracleCommand cmd = new OracleCommand();
 45         PrepareCommand(cmd, trans.Connection, trans, cmdType, cmdText, cmdParms);
 46         int val = cmd.ExecuteNonQuery();
 47         cmd.Parameters.Clear();
 48         return val;
 49     }
 50 
 51     ///   
 52     /// 执行数据库非查询操作,返回受影响的行数  
 53     ///   
 54     /// Oracle数据库连接对象  
 55     /// Command类型  
 56     /// Oracle存储过程名称或PL/SQL命令  
 57     /// 命令参数集合  
 58     /// 当前查询操作影响的数据行数  
 59     public static int ExecuteNonQuery(OracleConnection connection, CommandType cmdType, string cmdText, params OracleParameter[] cmdParms)
 60     {
 61         if (connection == null) 
 62             throw new ArgumentNullException("当前数据库连接不存在");
 63         OracleCommand cmd = new OracleCommand();
 64         PrepareCommand(cmd, connection, null, cmdType, cmdText, cmdParms);
 65         int val = cmd.ExecuteNonQuery();
 66         cmd.Parameters.Clear();
 67         return val;
 68     }
 69 
 70     ///   
 71     /// 执行数据库查询操作,返回OracleDataReader类型的内存结果集  
 72     ///   
 73     /// 数据库连接字符串
 74     /// 命令的类型
 75     /// Oracle存储过程名称或PL/SQL命令  
 76     /// 命令参数集合  
 77     /// 当前查询操作返回的OracleDataReader类型的内存结果集  
 78     public static OracleDataReader ExecuteReader(string connectionString, CommandType cmdType, string cmdText, params OracleParameter[] cmdParms)
 79     {
 80         OracleCommand cmd = new OracleCommand();
 81         OracleConnection conn = new OracleConnection(connectionString);
 82         try
 83         {
 84             PrepareCommand(cmd, conn, null, cmdType, cmdText, cmdParms);
 85             OracleDataReader reader = cmd.ExecuteReader(CommandBehavior.CloseConnection);
 86             cmd.Parameters.Clear();
 87             return reader;
 88         }
 89         catch
 90         {
 91             cmd.Dispose();
 92             conn.Close();
 93             throw;
 94         }
 95     }
 96 
 97     ///   
 98     /// 执行数据库查询操作,返回DataSet类型的结果集  
 99     ///   
100     /// 数据库连接字符串
101     /// 命令的类型
102     /// Oracle存储过程名称或PL/SQL命令  
103     /// 命令参数集合  
104     /// 当前查询操作返回的DataSet类型的结果集  
105     public static DataSet ExecuteDataSet(string connectionString, CommandType cmdType, string cmdText, params OracleParameter[] cmdParms)
106     {
107         OracleCommand cmd = new OracleCommand();
108         OracleConnection conn = new OracleConnection(connectionString);
109         DataSet ds = null;
110         try
111         {
112             PrepareCommand(cmd, conn, null, cmdType, cmdText, cmdParms);
113             OracleDataAdapter adapter = new OracleDataAdapter();
114             adapter.SelectCommand = cmd;
115             ds = new DataSet();
116             adapter.Fill(ds);
117             cmd.Parameters.Clear();
118         }
119         catch
120         {
121             throw;
122         }
123         finally
124         {
125             cmd.Dispose();
126             conn.Close();
127             conn.Dispose();
128         }
129 
130         return ds;
131     }
132 
133     ///   
134     /// 执行数据库查询操作,返回DataTable类型的结果集  
135     ///   
136     /// 数据库连接字符串
137     /// 命令的类型
138     /// Oracle存储过程名称或PL/SQL命令  
139     /// 命令参数集合  
140     /// 当前查询操作返回的DataTable类型的结果集  
141     public static DataTable ExecuteDataTable(string connectionString, CommandType cmdType, string cmdText, params OracleParameter[] cmdParms)
142     {
143         OracleCommand cmd = new OracleCommand();
144         OracleConnection conn = new OracleConnection(connectionString);
145         DataTable dt = null;
146 
147         try
148         {
149             PrepareCommand(cmd, conn, null, cmdType, cmdText, cmdParms);
150             OracleDataAdapter adapter = new OracleDataAdapter();
151             adapter.SelectCommand = cmd;
152             dt = new DataTable();
153             adapter.Fill(dt);
154             cmd.Parameters.Clear();
155         }
156         catch
157         {
158             throw;
159         }
160         finally
161         {
162             cmd.Dispose();
163             conn.Close();
164             conn.Dispose();
165         }
166 
167         return dt;
168     }
169 
170     ///   
171     /// 执行数据库查询操作,返回结果集中位于第一行第一列的Object类型的值  
172     ///   
173     /// 数据库连接字符串
174     /// 命令的类型
175     /// Oracle存储过程名称或PL/SQL命令  
176     /// 命令参数集合  
177     /// 当前查询操作返回的结果集中位于第一行第一列的Object类型的值  
178     public static object ExecuteScalar(string connectionString, CommandType cmdType, string cmdText, params OracleParameter[] cmdParms)
179     {
180         OracleCommand cmd = new OracleCommand();
181         OracleConnection conn = new OracleConnection(connectionString);
182         object result = null;
183         try
184         {
185             PrepareCommand(cmd, conn, null, cmdType, cmdText, cmdParms);
186             result = cmd.ExecuteScalar();
187             cmd.Parameters.Clear();
188         }
189         catch
190         {
191             throw;
192         }
193         finally
194         {
195             cmd.Dispose();
196             conn.Close();
197             conn.Dispose();
198         }
199 
200         return result;
201     }
202 
203     ///      
204     ///    执行数据库事务查询操作,返回结果集中位于第一行第一列的Object类型的值  
205     ///      
206     ///    一个已存在的数据库事务对象  
207     ///    命令类型  
208     ///    Oracle存储过程名称或PL/SQL命令  
209     ///    命令参数集合  
210     ///    当前事务查询操作返回的结果集中位于第一行第一列的Object类型的值  
211     public static object ExecuteScalar(OracleTransaction trans, CommandType cmdType, string cmdText, params OracleParameter[] cmdParms)
212     {
213         if (trans == null) 
214             throw new ArgumentNullException("当前数据库事务不存在");
215         OracleConnection conn = trans.Connection;
216         if (conn == null) 
217             throw new ArgumentException("当前事务所在的数据库连接不存在");
218 
219         OracleCommand cmd = new OracleCommand();
220         object result = null;
221 
222         try
223         {
224             PrepareCommand(cmd, conn, trans, cmdType, cmdText, cmdParms);
225             result = cmd.ExecuteScalar();
226             cmd.Parameters.Clear();
227         }
228         catch
229         {
230             throw;
231         }
232         finally
233         {
234             trans.Dispose();
235             cmd.Dispose();
236             conn.Close();
237             conn.Dispose();
238         }
239 
240         return result;
241     }
242 
243     ///   
244     /// 执行数据库查询操作,返回结果集中位于第一行第一列的Object类型的值  
245     ///   
246     /// 数据库连接对象  
247     /// Command类型  
248     /// Oracle存储过程名称或PL/SQL命令  
249     /// 命令参数集合  
250     /// 当前查询操作返回的结果集中位于第一行第一列的Object类型的值  
251     public static object ExecuteScalar(OracleConnection conn, CommandType cmdType, string cmdText, params OracleParameter[] cmdParms)
252     {
253         if (conn == null) throw new ArgumentException("当前数据库连接不存在");
254         OracleCommand cmd = new OracleCommand();
255         object result = null;
256 
257         try
258         {
259             PrepareCommand(cmd, conn, null, cmdType, cmdText, cmdParms);
260             result = cmd.ExecuteScalar();
261             cmd.Parameters.Clear();
262         }
263         catch
264         {
265             throw;
266         }
267         finally
268         {
269             cmd.Dispose();
270             conn.Close();
271             conn.Dispose();
272         }
273 
274         return result;
275     }
276 
277     ///   
278     /// 执行数据库命令前的准备工作  
279     ///   
280     /// Command对象  
281     /// 数据库连接对象  
282     /// 事务对象  
283     /// Command类型  
284     /// Oracle存储过程名称或PL/SQL命令  
285     /// 命令参数集合  
286     private static void PrepareCommand(OracleCommand cmd, OracleConnection conn, OracleTransaction trans, CommandType cmdType, string cmdText, OracleParameter[] cmdParms)
287     {
288         if (conn.State != ConnectionState.Open) 
289             conn.Open();
290 
291         cmd.Connection = conn;
292         cmd.CommandText = cmdText;
293        
294         if (trans != null)
295             cmd.Transaction = trans;
296 
297         cmd.CommandType = cmdType;
298 
299         if (cmdParms != null)
300         {
301             foreach (OracleParameter parm in cmdParms)
302                 cmd.Parameters.Add(parm);
303         }
304     }
305 
306     ///   
307     /// 将.NET日期时间类型转化为Oracle兼容的日期时间格式字符串  
308     ///   
309     /// .NET日期时间类型对象  
310     /// Oracle兼容的日期时间格式字符串(如该字符串:TO_DATE('2007-12-1','YYYY-MM-DD'))  
311     public static string GetOracleDateFormat(DateTime date)
312     {
313         return "TO_DATE('" + date.ToString("yyyy-M-dd") + "','YYYY-MM-DD')";
314     }
315 
316     ///   
317     /// 将.NET日期时间类型转化为Oracle兼容的日期格式字符串  
318     ///   
319     /// .NET日期时间类型对象  
320     /// Oracle日期时间类型格式化限定符  
321     /// Oracle兼容的日期时间格式字符串(如该字符串:TO_DATE('2007-12-1','YYYY-MM-DD'))  
322     public static string GetOracleDateFormat(DateTime date, string format)
323     {
324         if (format == null || format.Trim() == "") format = "YYYY-MM-DD";
325         return "TO_DATE('" + date.ToString("yyyy-M-dd") + "','" + format + "')";
326     }
327 
328     ///   
329     /// 将指定的关键字处理为模糊查询时的合法参数值  
330     ///   
331     /// 待处理的查询关键字  
332     /// 过滤后的查询关键字  
333     public static string HandleLikeKey(string source)
334     {
335         if (source == null || source.Trim() == "") return null;
336 
337         source = source.Replace("[", "[]]");
338         source = source.Replace("_", "[_]");
339         source = source.Replace("%", "[%]");
340 
341         return ("%" + source + "%");
342     }
343 
344 }

你可能感兴趣的:(C# Oracle数据库操作类)