不安装oracle客户端,连接到服务器的oracle (注:针对 odp.net)

  前几天在研究怎样不安装oracle客户端去访问oracle,并把里面的数据同步到本地的Sql Server数据库中。

  准备工作:首先你得有如下.dll,我这个是针对oracle10g的,如果是更高的版本,请使用10g以上版本。

oci.dll,ocijdbc10.dll,ociw32.dll,orannzsbb10.dll,oraocci10.dll,oraociei10.dll,System.Data.OracleClient.dll

最后那个dll我一开始是用Oracle.dataacess.dll,然后就一直报初始化失败,原因估计是本地的环境问题,等有空我在深究。上面那些dll我放在csdn上了,地址在结尾处了。

  下面是demo中的一些代码:

using log4net;

using System.Data.SqlClient;

using System.Data.Sql;

using System.Data.OracleClient;

using System.Data;

#region Orcle连接对象

        /// <summary>

        /// 连接对象 字段

        /// </summary>

        private static OracleConnection conn = null;

        /// <summary>

        /// 连接串 字段

        /// </summary>



        //private static string connstr = @"Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=localhost)(PORT=1521)))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=ORCL)));User Id=leaf;Password=leaf;";

        private static string connstr = @"Data Source服务器ip/orcl;Persist Security Info=True;User ID=账户;Password=密码;";



        /// <summary>

        /// 取得连接对象, 并打开

        /// </summary>

        public static OracleConnection GetOracleConnectionAndOpen

        {

            get

            {

                OracleConnection conn = new OracleConnection(connstr);

                conn.Open();

                return conn;

            }

        }



        /// <summary>

        /// 彻底关闭并释放 OracleConnection 对象,再置为null.

        /// </summary>

        /// <param name="conn">OracleConnection</param>

        public static void CloseOracleConnection(OracleConnection conn)

        {

            if (conn == null)

                return;

            conn.Close();

            conn.Dispose();

            conn = null;

        }

        #endregion

#region OracleExecuteDataSet

        /// <summary>

        /// 执行SQL语句, 返回DataSet

        /// </summary>

        /// <param name="cmdText">命令字符串</param>

        /// <param name="commandParameters">可变参数</param>

        /// <returns> DataSet </returns>

        public static DataSet ExecuteDataSet(string cmdText, params OracleParameter[] commandParameters)

        {

            return ExecuteDataSet(cmdText, CommandType.Text, commandParameters);

        }



        /// <summary>

        /// 返回DataSet

        /// </summary>

        /// <param name="cmdText">命令字符串</param>

        /// <param name="cmdType">命令类型</param>

        /// <param name="commandParameters">可变参数</param>

        /// <returns> DataSet </returns>

        public static DataSet ExecuteDataSet(string cmdText, CommandType cmdType, params OracleParameter[] commandParameters)

        {

            DataSet result = null;

            OracleConnection conn = null;

            try

            {

                conn = GetOracleConnectionAndOpen;

                OracleCommand command = new OracleCommand();



                PrepareCommand(command, conn, cmdType, cmdText, commandParameters);

                OracleDataAdapter adapter = new OracleDataAdapter();

                adapter.SelectCommand = command;

                result = new DataSet();

                adapter.Fill(result);

            }

            catch (Exception ex)

            {

                throw ex;

            }

            finally

            {

                if (conn != null)

                    CloseOracleConnection(conn);

            }



            return result;

        }



        #endregion

#region PrepareOracleCommand

        /// <summary>

        /// Command对象执行前预处理

        /// </summary>

        /// <param name="command"></param>

        /// <param name="connection"></param>

        /// <param name="trans"></param>

        /// <param name="cmdType"></param>

        /// <param name="cmdText"></param>

        /// <param name="commandParameters"></param>

        private static void PrepareCommand(OracleCommand command, OracleConnection connection, CommandType cmdType, string cmdText, OracleParameter[] commandParameters)

        {

            try

            {

                if (connection.State != ConnectionState.Open) connection.Open();



                command.Connection = connection;

                command.CommandText = cmdText;

                command.CommandType = cmdType;



                if (commandParameters != null)

                {

                    foreach (OracleParameter parm in commandParameters)

                        command.Parameters.Add(parm);

                }

            }

            catch (Exception ex)

            {

                throw ex;

            }

        }

        #endregion
View Code

操作基本和.net的一样,没啥好说的,主要的就是上面那几个dll,非常重要。

csdn下载地址:http://download.csdn.net/download/pcbzw/7097097

你可能感兴趣的:(oracle)