该类为本人项目使用中的oracle连接工具类
1.先引入OraOps10.dll
2.将该类加入项目中
dll及源码下载地址
https://pan.baidu.com/s/1aoFHKG5C1iQThC4rpZ6M_w
源码如下
using System;
using System.Collections.Generic;
using System.Text;
using System.Collections;
using System.Data;
using System.Data.OracleClient;
namespace TImageEdit
{
public class OracleHelperMS
{
/// <summary>
/// 数据库连接字符串
/// </summary>
public static readonly string Constr = "Data Source=xxxx;User Id=xxxx;Password=xxx;Min Pool Size=10;Connection Lifetime=120;";
/// <summary>
/// 定义hashtable表
/// </summary>
private static Hashtable parmCache = Hashtable.Synchronized(new Hashtable());
/// <summary>基于参数的准备命令对象
/// SqlTransaction是c#类里面的事务对象,能保持数据库的数据统一性。如果出错则回滚
/// </summary>
/// <param name="cmd">OracleCommand对象</param>
/// <param name="conn">OracleConnection对象</param>
/// <param name="trans">sqltransaction对象</param>
/// <param name="cmdType">命令类型</param>
/// <param name="cmdText">sql命令或者是存储过程名</param>
/// <param name="cmdParms">执行命令用的sqlparamter数组</param>
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();
}
}
/// <summary>
/// 基于连接字符串的数据库执行一个非查询的SQL命令
/// </summary>可以使用参数集传入命令参数
/// 例子:int result =ExcuteNonQuery(connstring,cmmandType.storedprocedure,"publishOrders",new OracleParameter("@prodid",24));
/// <param name="connectionString">为OracleConnection提供的连接字符串</param>
/// <param name="cmdType">命令类型(commandtype.storedprocedure,commandtype.text....)</param>
/// <param name="cmdText">存储过程名或者是T-SQL命令</param>
/// <param name="commandParameters">执行命令所使用的OracleParameters数组</param>
/// <returns> 返回命令所影响的行数</returns>
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;
}
}
}
/// <summary>
/// 基于连接对象的数据库执行一个非查询的SQL命令
/// 可以使用参数集传入命令参数
/// 例子:int result=ExcuteNonQuery(conn,commandtype.storedprocedure,"publishorders",new OracleParameter("@prodid",24));
/// </summary>
/// <param name="connection">一个存在的连接对象</param>
/// <param name="cmdType">命令类型(commandtype.storedprocedure,commandtype.text....)</param>
/// <param name="cmdText">存储过程名或者是T-SQL命令</param>
/// <param name="commandParameters">执行命令所使用的OracleParameters数组</param>
/// <returns> 返回命令所影响的行数</returns>
public static int ExcuteNonQuery(OracleConnection connection, CommandType cmdType, string cmdText, params OracleParame