博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
电脑上不安装Oracle时,C# 调用oracle数据库,Oracle客户工具 【转载】
阅读量:4919 次
发布时间:2019-06-11

本文共 6416 字,大约阅读时间需要 21 分钟。

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数据库了。

转载于:https://www.cnblogs.com/yy1234/p/8857256.html

你可能感兴趣的文章
原码, 反码, 补码 详解
查看>>
BZOJ4154 : [Ipsc2015]Generating Synergy
查看>>
我的一个小App——谈天气
查看>>
【DevExpress v17.2新功能预告】DevExtreme TreeList
查看>>
Fitnesse框架介绍(一)
查看>>
Codeforces Round #FF (Div. 2) 题解
查看>>
Mysql Programming CS 155P笔记(三)
查看>>
我的感情,仍是如此,卦卦如此
查看>>
这样一套操作要练习多久
查看>>
django
查看>>
通过分区(Partition)提升MySQL性能
查看>>
JAVA.exe进程
查看>>
mysql安装及常见问题
查看>>
Thinkphp .htaccess 与 httpd.ini文件重定向转换问题
查看>>
gulp-less解决遇到错误停止执行task
查看>>
一些很少用又很常见的功能的实现方法链接
查看>>
20145235《信息安全系统设计基础》第十二周学习总结
查看>>
响应式布局 大中小屏幕
查看>>
iOS开发UI篇—transframe属性(形变)
查看>>
java中的单例模式
查看>>