C#不安裝Oracle10g用戶端串連Oracle10g資料庫

來源:互聯網
上載者:User

最近一項目,要寫成一個From程式,並且有關資料操作都是和Oracle打交道。。。
這可累了,大家都知道,本機不裝Oracle用戶端,原生程式是不能訪問Oracle資料庫的。
可是一個用戶端最少也得八十多兆。太大了。再多,程式部署也不方便。
在網上找了找還真有解決辦法。狂喜.....好景不長啊。。。最後證實都不太好用。。。
最後終於在網路和同事們的共同努力下。終於測試成功。。
方法如下:(環境:Vs2003+Oracle10g)

1、把instantclient-basic-win32-10.2.0.4.zip中的檔案解壓到指定位置(我本機是解壓到D:\fox,並命名為:instantclient)
其內面應該包括:BASIC_README、oci.dll、ocijdbc10.dll、ociw32.dll、orannzsbb10.dll、oraocci10.dll、oraociei10.dll、classes12.jar、ojdbc14.jar九個檔案.
(注::http://www.oracle.com/technology/software/tech/oci/instantclient/htdocs/winsoft.html;需註冊使用者,我下載的是:instantclient-basic-win32-10.2.0.4.zip)

2、添加tnsnames.ora檔案(添加到D:\fox\instantclient檔案中):
    檔案tnsnames.ora其內容:
# tnsnames.ora Network Configuration File: D:\fox\instantclient\tnsnames.ora /*這是此檔案地址*/
# Generated by Oracle configuration tools.

ORCL1 =/*這是本機聯絡Oracle伺服器的服務名稱,代碼中用到*/
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 伺服器位址IP 或伺服器名稱)(PORT = 伺服器連接埠號碼,預設為“1521“))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = 伺服器資料庫服務的名字,預設為:”orcl“)
    )
  )

3、添加註冊表內容:(其內容如下,涉及到的檔案位置的根據自己需要改)

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment]
"LD_LIBRARY_PATH"="D:\\fox\\instantclient"
"TNS_ADMIN"="D:\\fox\\instantclient"
"NLS_LANG"="AMERICAN_AMERICA.ZHS16GBK"

4、添加環境變數

按右鍵“我的電腦”-->“屬性”-->“進階”-->“環境變數”-->“系統變數”-->選中“Path”-->“編輯”-->在“變數值”原來的資料後添加";D:\fox\instantclient"

5、重啟電腦(經測試,按此順序應該是不必重啟的)。

6、查詢Oracle資料庫部分代碼:

當然此代碼的啟動並執行基礎:在此開發項目中——>添加引用——>.NET選項卡,選取System.Data.OracleClient.dll。
並在此cs開頭添加:using System.Data.OracleClient;//引用Oracle串連類

        private void button8_Click(object sender, System.EventArgs e)
        {
            try
            {
                OracleConnection cnn=new OracleConnection("Data Source=orcl1;User ID=方案名;Password=密碼");
                cnn.Open();
                OracleDataAdapter myDa =new OracleDataAdapter();
                  myDa.SelectCommand = new OracleCommand("select * from \"表名\"",cnn); //查詢時,表名用雙引號括起來
                  DataSet myDs =new DataSet();
                  myDa.Fill(myDs);
                this.textBox1.Text=myDs.Tables[0].Rows[0][0].ToString();//得到查詢表的第一行第一列
            }
            catch(Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }
以上就是我的不裝Oracle用戶端連Oracle資料庫的辦法。
如果有更簡潔的請留言。。

本文來自CSDN部落格,轉載請標明出處:http://blog.csdn.net/lhg0302/archive/2009/04/11/4062569.aspx

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.