纵有疾风起
人生不言弃

电脑上不安装Oracle时,C# 调用oracle数据库,Oracle客户工具

Oracle的安装包通常都比较大,安装又比较费时,而且如果安装过程中不幸出错,各种蛋疼,即便是安装过N遍的老手,有时候安装起来也觉得挺烦。而工作中,通常服务器上面安装oracle就可以了,我们本地电脑只需要安装一个oracle客户端,然后连接到服务器就可以了。

Oracle 轻量级客户端我推荐使用Navicat For Oracle,只有17M。

1、下载以下几个dll,我这里使用的是oracle11g,这几个DLL的下载地址:http://pan.baidu.com/s/1kU1JafX

电脑上不安装Oracle时,C# 调用oracle数据库,Oracle客户工具插图

2、将其拷贝到项目中,设置dll属性为“复制到输出目录”为“始终复制”

3、项目中添加Oracle.DataAccess.dll的引用

4、创建oracle操作类ORacleDBHelp

电脑上不安装Oracle时,C# 调用oracle数据库,Oracle客户工具插图1

/* ==============================================================================   * 功能描述: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 事务处理方法        /// <summary>        /// 开启全局事务处理        /// </summary>        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;        }        /// <summary>        /// 提交全局事务处理        /// </summary>        public void Commit()        {            cmd.Transaction.Commit();//事务提交            Transaction.Dispose();            cmd.Dispose();            TranConn.Close();            TranConn.Dispose();        }        /// <summary>        /// 回滚全局事务处理        /// </summary>        public void Rollback()        {            if (IsTran)            {                cmd.Transaction.Rollback();//事务回滚                Transaction.Dispose();                cmd.Dispose();                TranConn.Close();                TranConn.Dispose();            }        }        /// <summary>        /// 执行不带参数sql语句,返回所影响的行数        /// </summary>        /// <param name="cmdstr">增,删,改sql语句</param>        /// <returns>返回所影响的行数</returns>        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 建立数据库连接对象        /// <summary>        /// 建立数据库连接        /// </summary>        /// <returns>返回一个数据库的连接OracleConnection对象</returns>        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        /// <summary>        /// 执行不带参数sql语句,返回所影响的行数        /// </summary>        /// <param name="cmdstr">增,删,改sql语句</param>        /// <returns>返回所影响的行数</returns>        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;        }        /// <summary>        /// 执行不带参数sql语句,返回一个从数据源读取数据的OracleDataReader对象        /// </summary>        /// <param name="cmdstr">相应的sql语句</param>        /// <returns>返回一个从数据源读取数据的OracleDataReader对象</returns>        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;        }    }}

View Code

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,“工具”——“选项”

电脑上不安装Oracle时,C# 调用oracle数据库,Oracle客户工具插图3

这个时候,Navicat For Oracle就可以连接服务器上面的Oracle数据库了。

文章转载于:https://www.cnblogs.com/jiekzou/p/5047850.html

原著是一个有趣的人,若有侵权,请通知删除

未经允许不得转载:起风网 » 电脑上不安装Oracle时,C# 调用oracle数据库,Oracle客户工具
分享到: 生成海报

评论 抢沙发

评论前必须登录!

立即登录