http://www.cnblogs.com/jiekzou/p/5047850.html
Oracle的安装包通常都比较大,安装又比较费时,而且如果安装过程中不幸出错,各种蛋疼,即便是安装过N遍的老手,有时候安装起来也觉得挺烦。而工作中,通常服务器上面安装oracle就可以了,我们本地电脑只需要安装一个oracle客户端,然后连接到服务器就可以了。
Oracle 轻量级客户端我推荐使用Navicat For Oracle,只有17M。
1、下载以下几个dll,我这里使用的是oracle11g,这几个DLL的下载地址:
2、将其拷贝到项目中,设置dll属性为“复制到输出目录”为“始终复制”
3、项目中添加Oracle.DataAccess.dll的引用
4、创建oracle操作类ORacleDBHelp
/* ============================================================================== * 功能描述:ORacleDBHelp * 创 建 者:Zouqj * 创建日期:2015/9/9 14:30:22 ==============================================================================*/using System;using System.Collections.Generic;using System.Text;using System.Configuration;using System.Data;using System.Threading;using System.Transactions;using Oracle.DataAccess.Client;using Oracle.DataAccess.Types;using Oracle.DataAccess;using DBHelper.Interface;namespace DBHelper{ public class ORacleDBHelp : ITransDB { private static OracleConnection conn; private bool IsTran = false; private OracleConnection TranConn; private OracleCommand cmd; private OracleTransaction Transaction; #region 事务处理方法 ////// 开启全局事务处理 /// public void BeginTransaction() { TranConn = new OracleConnection(ConfigurationManager.ConnectionStrings["OracleConnection"].ConnectionString); if (TranConn.State == ConnectionState.Closed) { TranConn.Open(); } Transaction = TranConn.BeginTransaction(); cmd = new OracleCommand("", TranConn); cmd.CommandTimeout = 600; IsTran = true; } ////// 提交全局事务处理 /// public void Commit() { cmd.Transaction.Commit();//事务提交 Transaction.Dispose(); cmd.Dispose(); TranConn.Close(); TranConn.Dispose(); } ////// 回滚全局事务处理 /// public void Rollback() { if (IsTran) { cmd.Transaction.Rollback();//事务回滚 Transaction.Dispose(); cmd.Dispose(); TranConn.Close(); TranConn.Dispose(); } } ////// 执行不带参数sql语句,返回所影响的行数 /// /// 增,删,改sql语句 ///返回所影响的行数 public int TranExecuteNonQuery(string cmdText) { int count; try { cmd.CommandText = cmdText; cmd.CommandTimeout = 600; if (cmd.Connection.State == ConnectionState.Closed) { cmd.Connection.Open(); } count = cmd.ExecuteNonQuery(); } catch (Exception ex) { throw new Exception(ex.Message.ToString().Trim()); } return count; } #endregion #region 建立数据库连接对象 ////// 建立数据库连接 /// ///返回一个数据库的连接OracleConnection对象 public static OracleConnection init() { try { if (conn == null) { conn = new OracleConnection(ConfigurationManager.ConnectionStrings["OracleConnection"].ToString().Trim()); } if (conn.State != ConnectionState.Open) { conn.Open(); } } catch (Exception e) { try { Thread.Sleep(5000); conn = new OracleConnection(ConfigurationManager.ConnectionStrings["OracleConnection"].ToString().Trim()); if (conn.State != ConnectionState.Open) { conn.Open(); } } catch (Exception) { throw new Exception(e.Message.ToString().Trim()); } } return conn; } #endregion ////// 执行不带参数sql语句,返回所影响的行数 /// /// 增,删,改sql语句 ///返回所影响的行数 public static int ExecuteNonQuery(string cmdText) { int count; OracleCommand ocmd = null; try { init(); ocmd = new OracleCommand("", conn); ocmd.CommandTimeout = 600; ocmd.CommandText = cmdText; count = ocmd.ExecuteNonQuery(); } catch (Exception ex) { throw new Exception(ex.Message.ToString().Trim()); } return count; } ////// 执行不带参数sql语句,返回一个从数据源读取数据的OracleDataReader对象 /// /// 相应的sql语句 ///返回一个从数据源读取数据的OracleDataReader对象 public static DataTable GetDataTable1(string cmdText) { OracleDataReader reader; OracleCommand ocmd = null; DataTable dt = new DataTable(); try { init(); ocmd = new OracleCommand("", conn); ocmd.CommandTimeout = 600; ocmd.CommandText = cmdText; ocmd.CommandTimeout = 600; reader = ocmd.ExecuteReader(); dt.Load(reader); reader.Dispose(); } catch (Exception ex) { throw new Exception(ex.Message.ToString().Trim()); } return dt; } }}
ITransDB接口
/* ============================================================================== * 功能描述:ITransDB * 创 建 者:Zouqj * 创建日期:2015/9/9 14:31:32 ==============================================================================*/using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace DBHelper.Interface{ public interface ITransDB { void BeginTransaction(); int TranExecuteNonQuery(string sql); void Commit(); void Rollback(); }}
现在可以通过C#来直接调用oracle操作了。
接下来,通过Oracle客户端连接到Oracle服务器
安装完Navicat For Oracle后,我们电脑上面没有安装oracle,将下载的dll拷贝到Navicat For Oracle的安装目录,我电脑上面是:D:\Program Files (x86)\PremiumSoft\Navicat for Oracle\instantclient_10_2\
然后配置Navicat For Oracle,“工具”——“选项”
这个时候,Navicat For Oracle就可以连接服务器上面的Oracle数据库了。