用心计较般般错 安心自守事事宽

cgl 坚持、努力终有所获
  新随笔  :: 管理

好处:

1、不安装客户端也能访问服务器上的oracle(假设Application Server与DB Server 分开)

2、不需要安装ODAC

3、不需要配置TnsNames.Ora文件

缺点:

不能使用odac for .net中对应的工具

步骤:

如果不安装Oracle11g的客户端则需要在程序的debug目录下拷贝如下几个dll文件

oci.dll

oracle.dataaccess.dll

oraops11w.dll

oraociei11.dll

这几个文件可以从下载的ODAC安装包中找到,我下载的是ODTwithODAC112030.zip,由于这些文件都放在..\stage\Components\..下面的压缩包里,所以比较难找,因此可以采用第二种方法:在安装有ODTwithODAC112030的计算机上找到相应的安装目录,将目录下面的对应文件copy出来就可以了

建议:在编码的时候最好是安装ODTwithODAC112030,在服务器上部署的时候不安装。

 

            string tIP = this.txtIP.Text;
            string tSid = this.txtSID.Text;
            string tUsername = this.txtUSERNAME.Text;
            string tpass = this.txtPASS.Text;
            string tTableName = this.txtTABLENAME.Text;

            string connectstring = string.Format("Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST={0})(PORT=1521)))(CONNECT_DATA=(SID={1})(SERVER=DEDICATED)));persist security info=True;user id={2};password={3}", tIP, tSid, tUsername, tpass);
            using (OracleAccess.OracleConnection tOC = new OracleAccess.OracleConnection(connectstring))
            {
                try
                {
                    OracleAccess.OracleCommand tOracleCommand = new OracleAccess.OracleCommand("select * from " + tTableName, tOC);
                    tOC.Open();
                    OracleAccess.OracleDataAdapter tOracleDA = new OracleAccess.OracleDataAdapter(tOracleCommand);
                    DataSet tDS = new DataSet();
                    tOracleDA.Fill(tDS);
                    if (tDS.Tables.Count > 0)
                    {
                        this.dataGridView1.DataSource = tDS.Tables[0];
                    }
                }
                catch (OracleAccess.OracleException ex)
                {
                    MessageBox.Show(ex.Message);
                }
            }