C# 使用OracleClient链接的新方式
2016-11-14 20:20
399 查看
目前根据网上的资料C#连Oracle数据主要有两种方式OracleClient和OleDB,不得不说这两种方式都非常古老了,更别说ADO.Net组件组件中的OracleClient已经被弃用了。
但是现在有了一种新的解决方案,那就是Oracle官方的OracleClient,而且用了它之后也不再需要单独的监听程序了。
下面是使用方法:
1.右键您的项目---管理NuGet程序包-搜索Oracle找到Oracle.ManagedDataAccess这个插件;
2.下面直接按照往常的通用方法写就可以了
connString链接信息需要说明一下,这个地方跟SQLServer有显著不同:
Password=***;User ID=***;Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=***)(PORT=1521)))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=****)))
以下为执行事务的备忘:
public static bool ExecuteTran(List<ExecuteModel> models)
{
bool issuccess = false;
using (OracleConnection conn = new OracleConnection(connString))
{
try {
if (conn.State != System.Data.ConnectionState.Open)
conn.Open();
using (OracleTransaction tran = conn.BeginTransaction()) //开始数据库事务。即创建一个事务对象tran
{
using (OracleCommand cmd = new OracleCommand())
{
cmd.Connection = conn;
cmd.Transaction = tran; //获取或设置将要其执行的事务
try
{
foreach (var m in models)
{
cmd.CommandText = m.sql;
if (m.paras != null)
{
cmd.Parameters.AddRange(m.paras);
}
cmd.ExecuteNonQuery();
cmd.Parameters.Clear();
}
tran.Commit(); //如果两条sql命令都执行成功,则执行commit这个方法来执行这些操作。
issuccess = true;
}
catch (OracleException E)
{
tran.Rollback();//如果执行不成功,发送异常,则执行rollback方法,回滚到事务操作开始之前。
issuccess = false;
throw new Exception(E.Message);
}
}
}
}
catch (OracleException E)
{
throw new Exception(E.Message);
}
finally
{
conn.Close();
}
}
return issuccess;
}
但是现在有了一种新的解决方案,那就是Oracle官方的OracleClient,而且用了它之后也不再需要单独的监听程序了。
下面是使用方法:
1.右键您的项目---管理NuGet程序包-搜索Oracle找到Oracle.ManagedDataAccess这个插件;
2.下面直接按照往常的通用方法写就可以了
/// <summary> /// 连接字符串 /// </summary> private static string connString = ConfigurationManager.AppSettings["DataSourceConnection"]; /// <summary> /// 执行单条sql /// </summary> /// <param name="sql">sql语句</param> /// <param name="paras">参数</param> public static int Execute(string sql, OracleParameter[] paras) { int i = 0; using (OracleConnection conn = new OracleConnection(connString)) { try { using (OracleCommand command = new OracleCommand { Connection = conn, CommandText = sql }) { if (conn.State != System.Data.ConnectionState.Open) conn.Open(); //添加参数 if (paras != null) { command.Parameters.AddRange(paras); } //这个调用将把参数数组传进SQL,同时写入数据库 i = command.ExecuteNonQuery(); command.Parameters.Clear(); } } catch (OracleException E) { throw new Exception(E.Message); } finally { conn.Close(); } } return i; }
connString链接信息需要说明一下,这个地方跟SQLServer有显著不同:
Password=***;User ID=***;Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=***)(PORT=1521)))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=****)))
以下为执行事务的备忘:
public static bool ExecuteTran(List<ExecuteModel> models)
{
bool issuccess = false;
using (OracleConnection conn = new OracleConnection(connString))
{
try {
if (conn.State != System.Data.ConnectionState.Open)
conn.Open();
using (OracleTransaction tran = conn.BeginTransaction()) //开始数据库事务。即创建一个事务对象tran
{
using (OracleCommand cmd = new OracleCommand())
{
cmd.Connection = conn;
cmd.Transaction = tran; //获取或设置将要其执行的事务
try
{
foreach (var m in models)
{
cmd.CommandText = m.sql;
if (m.paras != null)
{
cmd.Parameters.AddRange(m.paras);
}
cmd.ExecuteNonQuery();
cmd.Parameters.Clear();
}
tran.Commit(); //如果两条sql命令都执行成功,则执行commit这个方法来执行这些操作。
issuccess = true;
}
catch (OracleException E)
{
tran.Rollback();//如果执行不成功,发送异常,则执行rollback方法,回滚到事务操作开始之前。
issuccess = false;
throw new Exception(E.Message);
}
}
}
}
catch (OracleException E)
{
throw new Exception(E.Message);
}
finally
{
conn.Close();
}
}
return issuccess;
}
相关文章推荐
- 使用C#的两种方式OracleClient组件和OleDB组件连接ORACLE数据库
- 使用普通方式和连接池方式获取Oracle和Mysql链接
- C# 连接 Oracle 数据库(三种方式:OracleClient、ODBC、OLEDB)
- Client使用c#和odp.net连接server oracle[转]
- 安装XEClient使用PL/SQL链接Oracle
- Client使用c#和odp.net连接server oracle
- C#中不使用Oracle Client,直接连接Oracle数据库
- C#中不使用Oracle Client,直接连接Oracle数据库
- HOW TO:使用 Visual C# .NET 在 ADO.NET 中以编程方式构建连接字符串
- 使用C#创建webservice及三种调用方式
- 如何使用C#在发送往client的内容上加js代码
- 在C#中使用代理的方式触发事件_转摘
- [导入]Visual Studio 中多个项目通过链接方式共享使用同一个文件
- C#中使用Oracle 存储过程笔记
- 使用C#创建webservice及三种调用方式
- 在C#中使用代理的方式触发事件
- 如何使用C#在发送往client的内容上加js代码
- C# 使用重载消息处理函数的方式,实现没有标题栏的窗体的拖动。
- 在C#中使用代理的方式触发事件
- C#中创建和使用资源动态链接库