oracle连接工具类,c# .net oracle连接工具类

该类为本人项目使用中的oracle连接工具类

1.先引入OraOps10.dll

2.将该类加入项目中

dll及源码下载地址

源码如下

using System;

using System.Collections.Generic;

using System.Text;

using System.Collections;

using System.Data;

using System.Data.OracleClient;

namespace TImageEdit

{

public class OracleHelperMS

{

///

/// 数据库连接字符串

///

public static readonly string Constr = "Data Source=xxxx;User Id=xxxx;Password=xxx;Min Pool Size=10;Connection Lifetime=120;";

///

/// 定义hashtable表

///

private static Hashtable parmCache = Hashtable.Synchronized(new Hashtable());

/// 基于参数的准备命令对象

/// SqlTransaction是c#类里面的事务对象,能保持数据库的数据统一性。如果出错则回滚

///

/// OracleCommand对象

/// OracleConnection对象

/// sqltransaction对象

/// 命令类型

/// sql命令或者是存储过程名

/// 执行命令用的sqlparamter数组

private static void PrepareCommand(OracleCommand cmd, OracleConnection conn, OracleTransaction trans, CommandType cmdType, string cmdText, OracleParameter[] cmdParms)

{

if (conn.State != ConnectionState.Open)

conn.Open();

cmd.Connection = conn;

cmd.CommandText = cmdText;

//if (trans != null)

//cmd.Transaction = trans;

cmd.CommandType = cmdType;

if (cmdParms != null)

{

foreach (OracleParameter parm in cmdParms)

cmd.Parameters.Add(parm);

OracleConnection cn = new OracleConnection();

}

}

///

/// 基于连接字符串的数据库执行一个非查询的SQL命令

/// 可以使用参数集传入命令参数

/// 例子:int result =ExcuteNonQuery(connstring,cmmandType.storedprocedure,"publishOrders",new OracleParameter("@prodid",24));

/// 为OracleConnection提供的连接字符串

/// 命令类型(commandtype.storedprocedure,commandtype.text....)

/// 存储过程名或者是T-SQL命令

/// 执行命令所使用的OracleParameters数组

/// 返回命令所影响的行数

public static int ExecuteNonQuery(string connectionString, CommandType cmdType, string cmdText, params OracleParameter[] commandParameters)

{

using (OracleCommand cmd = new OracleCommand())

{

using (OracleConnection coon = new OracleConnection(connectionString))

{

PrepareCommand(cmd, coon, null, cmdType, cmdText, commandParameters);

//OracleTransaction myTrans=coon.BeginTransaction();

int val = cmd.ExecuteNonQuery();

//myTrans.Commit();

cmd.Parameters.Clear();

return val;

}

}

}

///

/// 基于连接对象的数据库执行一个非查询的SQL命令

/// 可以使用参数集传入命令参数

/// 例子:int result=ExcuteNonQuery(conn,commandtype.storedprocedure,"publishorders",new OracleParameter("@prodid",24));

///

/// 一个存在的连接对象

/// 命令类型(commandtype.storedprocedure,commandtype.text....)

/// 存储过程名或者是T-SQL命令

/// 执行命令所使用的OracleParameters数组

/// 返回命令所影响的行数

public static int ExcuteNonQuery(OracleConnection connection, CommandType cmdType, string cmdText, params OracleParameter[] commandParameters)

{

using (OracleCommand cmd = new OracleCommand())

{

PrepareCommand(cmd, connection, null, cmdType, cmdText, commandParameters);

int val = cmd.ExecuteNonQuery();

cmd.Parameters.Clear();

return val;

}

}

///

/// 基于事务对象的数据库执行一个非查询SQL语句

///  可以使用参数集传入命令参数

/// 例子:int result=ExcuteNonQuery(trans,commandtype.storedprocedure,"publishorders",new OracleParameter("@prodid",24));

///

///

/// 一个存在的事务对象

/// 命令类型(commandtype.storedprocedure,commandtype.text....)

/// 存储过程名或者是T-SQL命令

/// 执行命令所使用的OracleParameters数组

/// 返回命令所影响的行数

public static int ExecuteNonQuery(OracleTransaction trans, CommandType cmdType, string cmdText, params OracleParameter[] commandParameters)

{

using (OracleCommand cmd = new OracleCommand())

{

PrepareCommand(cmd, trans.Connection, trans, cmdType, cmdText, commandParameters);

int val = cmd.ExecuteNonQuery();

cmd.Parameters.Clear();

return val;

}

}

///

///  基于连接字符串的数据库执行一个查询,返回数据流sqldatareader

///  可以使用参数集传入命令参数

///  例子:SqldataReader r=ExecuteReader(connstring,commandtype.storedprocedure,"publishorders",new OracleParameter("@prodid",24));

///

///

/// 为OracleConnection提供连接的字符串

/// 命令类型(commandtype.storedprocedure,commandtype.text,...)

/// T-SQL命令存储过程名或者是

/// 执行命令所用的sqlparamters

///

public static OracleDataReader ExecuteReader(string connectionString, CommandType cmdType, string cmdText, params OracleParameter[] commandParameters)

{

OracleCommand cmd = new OracleCommand();

OracleConnection conn = new OracleConnection(Constr);

try

{

PrepareCommand(cmd, conn, null, cmdType, cmdText, commandParameters);

OracleDataReader rdr = cmd.ExecuteReader(CommandBehavior.CloseConnection);

cmd.Parameters.Clear();

return rdr;

}

catch

{

conn.Close();

throw;

}

}

///

/// 基于连接字符串的数据库执行一个查询,返回数据流sqldatareader

///  可以使用参数集传入命令参数

///

///

public static DataTable PDataTable(string connectionString, CommandType cmdType, string cmdText, params OracleParameter[] commandParameters)

{

using (OracleConnection conn = new OracleConnection(Constr))

{

DataSet dataset = new DataSet();

using (OracleCommand cmd = new OracleCommand())

{

PrepareCommand(cmd, conn, null, cmdType, cmdText, commandParameters);

using (OracleDataAdapter adapter = new OracleDataAdapter(cmd))

{

adapter.Fill(dataset);

return dataset.Tables[0];

}

}

}

}

///

/// 获取一个数据表格

///

///

public static void DoExcute(string cmdText)

{

OracleHelperMS.ExecuteNonQuery(OracleHelperMS.Constr, CommandType.Text, cmdText, null);

}

///

/// 获取一个数据表格

///

///

public static DataTable getDataTable(string cmdText)

{

return OracleHelperMS.PDataTable(OracleHelperMS.Constr, CommandType.Text, cmdText, null);

}

///

/// 获取一行数据

///

///

public static DataRow getDataRow(string cmdText)

{

return OracleHelperMS.PDataRow(OracleHelperMS.Constr, CommandType.Text, cmdText, null);

}

///

/// 基于连接字符串的数据库执行一个查询,返回数据流sqldatareader

///  可以使用参数集传入命令参数

///

///

public static DataRow PDataRow(string connectionString, CommandType cmdType, string cmdText, params OracleParameter[] commandParameters)

{

using (OracleConnection conn = new OracleConnection(Constr))

{

DataSet dataset = new DataSet();

using (OracleCommand cmd = new OracleCommand())

{

PrepareCommand(cmd, conn, null, cmdType, cmdText, commandParameters);

using (OracleDataAdapter adapter = new OracleDataAdapter(cmd))

{

adapter.Fill(dataset);

if (dataset.Tables[0] != null && dataset.Tables[0].Rows.Count > 0)

{

return dataset.Tables[0].Rows[0];

}

else

{

return null;

}

}

}

}

}

///

/// 基于连接字符串的数据库执一个查询,返回结果集得第一行第一列的数据对象

/// 可以使用参数集传入命令参数

/// 例子:object boj=ExecuteScalar(connstring,commandType.storedprocedure,"publishoreders",new OracleParameter("@prodid",24));

///

///

/// 为OracleConnection提供的连接字符串

/// 命令类型(commandType.storedprocedure,commandtype.text,......)

/// 存储过程名或者T-SQL命令

/// 执行命令所使用的sqlparamters数组

/// 返回结果的第一行第一列

public static object ExecuteScalar(string connectionString, CommandType cmdType, string cmdText, params OracleParameter[] commandParameters)

{

using (OracleCommand cmd = new OracleCommand())

{

using (OracleConnection connection = new OracleConnection(Constr))

{

PrepareCommand(cmd, connection, null, cmdType, cmdText, commandParameters);

object val = cmd.ExecuteScalar();

cmd.Parameters.Clear();

return val;

}

}

}

///

/// 基于连接对象的数据库执行一个查询,返回结果的第一行第一列的数据对象

/// 可以使用参数集传入命令参数

/// 例子:object obj =executescalar(conn,commandtype.storedprocedure,"publishOreders",new sqlparamters("@prodid",24));

///

///

/// 一个存在的连接对象

/// 命令类型(commandtype.storedprocedure,commondtype.text,....)

/// 存储过程名或者T-SQL命令

/// 执行命令所使用的sqlparamters数组

/// 返回结果的第一行第一列

public static object ExecuteScalar(OracleConnection connection, CommandType cmdType, string cmdText, params OracleParameter[] commandParameters)

{

using (OracleCommand cmd = new OracleCommand())

{

PrepareCommand(cmd, connection, null, cmdType, cmdText, commandParameters);

object val = cmd.ExecuteScalar();

cmd.Parameters.Clear();

return val;

}

}

///

/// 执行Insert

///

///

///

///

///

public static int DoInsert(string ATable, string[] AFields, object[] AValues)

{

string SQL = "Insert into " + ATable + "(";

for (int i = 0; i < AFields.Length; i++)

{

SQL += AFields[i] + " ,";

}

SQL = SQL.Substring(0, SQL.Length - 1) + ") values (";

string[] APs = new string[AFields.Length];

for (int i = 0; i < AFields.Length; i++)

{

if (AValues[i].GetType() == typeof(System.DateTime))

{

SQL += "to_date('" + AValues[i] + "','yyyy/mm/dd hh24:mi:ss') ,";

}

else

{

SQL += "'" + AValues[i] + "' ,";

}

}

SQL = SQL.Substring(0, SQL.Length - 1) + ") ";

return ExecuteNonQuery(OracleHelperMS.Constr, CommandType.Text, SQL, null);

}

public static int ExecuteNonQuery(String SQL)

{

return ExecuteNonQuery(OracleHelperMS.Constr, CommandType.Text, SQL, null);

}

///

/// 更新数据表

///

///

///

///

///

///

///

public static int DoUpdate(string ATable, string[] AFields, object[] AValues,

string[] ACondFields, object[] ACondValues

)

{

string SQL = "Update " + ATable + " Set ";

for (int i = 0; i < AFields.Length; i++)

{

SQL += AFields[i] + " ='" + AValues[i] + "' ,";

}

SQL = SQL.Substring(0, SQL.Length - 1);

if (ACondValues != null)

{

SQL += " where (1>0) ";

for (int i = 0; i < ACondFields.Length; i++)

{

SQL += " and " + ACondFields[i] + " ='" + ACondValues[i]+"'";

}

}

return ExecuteNonQuery(OracleHelperMS.Constr, CommandType.Text, SQL, null);

}

///

/// 向缓冲区添加参数

///

/// 参数集对象在缓冲区中的key

/// 要缓存的参数集对象

public static void CacheParameters(string cacheKey, params OracleParameter[] commandParamters)

{

parmCache[cacheKey] = commandParamters;

}

///

/// 从缓冲区读取参数集对象

///

/// 参数集对象在缓冲区的key

/// 被缓存的参数集对象

public static OracleParameter[] GetCachedParameters(string cacheKey)

{

OracleParameter[] cachedParams = (OracleParameter[])parmCache[cacheKey];

if (cachedParams == null)

return null;

OracleParameter[] clonedParms = new OracleParameter[cachedParams.Length];

for (int i = 0, j = cachedParams.Length; i < j; i++)

clonedParms[i] = (OracleParameter)((ICloneable)cachedParams[i]).Clone();

return clonedParms;

}

///

/// Oracle执行事务

///

///

///

public static bool RunTransaction(string connectionString, string[] sqls)

{

using (OracleConnection connection = new OracleConnection(connectionString))

{

connection.Open();

OracleCommand command = connection.CreateCommand();

OracleTransaction transaction;

transaction = connection.BeginTransaction(IsolationLevel.ReadCommitted);

//command.Transaction = transaction;

try

{

foreach (string sql in sqls)

{

command.CommandText = sql;

command.ExecuteNonQuery();

}

transaction.Commit();

return true;

}

catch (Exception ex)

{

transaction.Rollback();

return false;

}

}

}

///

/// 更新datatable

///

///

///

///

///

///

///

public static void DataTableToDB(string connectionString, System.Windows.Forms.DataGridView GV, string selectTab, string cmdUpText, string uprow, params OracleParameter[] commandParameters)

{

using (OracleConnection conn = new OracleConnection(connectionString))

{

conn.Open();

using (OracleDataAdapter sd = new OracleDataAdapter())

{

sd.SelectCommand = new OracleCommand("select top 300 * from " + selectTab + "", conn);

DataSet dataset = new DataSet();

sd.Fill(dataset);

//sd.UpdateCommand = new SqlCommand("update tb11 "

//                + " set t3 = @t3,t4 = @t4 where t1 = @t1 and t2=@t2", conn);

sd.UpdateCommand = new OracleCommand(cmdUpText, conn);

if (commandParameters != null)

{

foreach (OracleParameter parm in commandParameters)

sd.UpdateCommand.Parameters.Add(parm);

}

//sd.UpdateCommand.Parameters.Add("@t1", SqlDbType.Int, 9, "t1");

//sd.UpdateCommand.Parameters.Add("@t2", SqlDbType.NVarChar, 4, "t2");

//sd.UpdateCommand.Parameters.Add("@t3", SqlDbType.NVarChar, 20, "t3");

//sd.UpdateCommand.Parameters.Add("@t4", SqlDbType.NVarChar, 20, "t4");

sd.UpdateCommand.UpdatedRowSource = UpdateRowSource.None;

sd.UpdateBatchSize = 0;

for (int count = 0; count < GV.RowCount - 1; )

{

int EverySec = 300;

int DataLeft = (GV.RowCount - 1) % 300;

for (int i = 0; i < EverySec; i++, count++)

{

if (count == (DataLeft - 1))

{

EverySec = DataLeft;

}

dataset.Tables[0].Rows[count].BeginEdit();

string[] lieming = uprow.Split(',');

for (int R = 0; R < lieming.Length; R++)

{

string t4 = lieming[R].ToString();

dataset.Tables[0].Rows[count][t4] = GV.Rows[count].Cells[t4].Value;

}

dataset.Tables[0].Rows[count].EndEdit();

}

try

{

sd.Update(dataset.Tables[0]);

}

catch (Exception exp)

{

throw new Exception(exp.Message);

}

}

//sd.Update(dt);

dataset.Tables[0].Clear();

sd.Dispose();

dataset.Dispose();

}

}

}

}

}

这是个静态类,直接类名+方法名调用就可以

如果有疑问可联系bug哥讨论

3c57f66be6c5?utm_campaign=haruki&utm_content=note&utm_medium=reader_share&utm_source=weixin

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值