程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Oracle數據庫 >> Oracle教程 >> .NET使用ODP.NET連接Oracle數據庫筆記,odp.netoracle

.NET使用ODP.NET連接Oracle數據庫筆記,odp.netoracle

編輯:Oracle教程

.NET使用ODP.NET連接Oracle數據庫筆記,odp.netoracle


1. 開發端安裝ODP.NET.下載地址:http://www.oracle.com/technetwork/topics/dotnet/downloads/index.html

注:建議下載和服務器版本一致的odp,不然會有很多奇怪的問題.至於使用32位還是64位,我試過沒有差異(服務器64位,開發機32位).

2. vs開一個console程序,引用Oracle.DataAccess.dll,至於從gac還是本地路徑引用都可以.測試代碼如下:

using System;
using System.Collections.Generic;
using System.Text;
using Oracle.DataAccess.Client; //odp類必須
using Oracle.DataAccess.Types;

namespace ConsoleApplication2
{
    class Program
    {
        static void Main(string[] args)
        {
            string conString = "Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=127.0.0.1)(PORT=1521))" +
              "(CONNECT_DATA=(SID=testdb)));User Id=dba;Password=dbb;";
            //寫連接串以上2方法連接都可以,也可以放到Web.Config中。 
            OracleConnection con=new OracleConnection(conString);
            OracleCommand command =new OracleCommand();
            command.Connection = con;
            command.CommandText = "select * from T_users";//改成自己的表
            con.Open();
            OracleDataReader dr = command.ExecuteReader(); // C# 
            while (dr.Read())
            {
                Console.WriteLine(dr[0].ToString());
            }
            
            //Console.WriteLine(returnResult);


            Console.Read();
        }
    }
}

如果能正常訪問數據,就證明ok了.

注:

1. 如果報錯

未處理的異常: System.IO.FileNotFoundException: 未能加載文件或程序集“Oracle.Dat

aAccess, Version=2.112.1.2, Culture=neutral, PublicKeyToken=89b483f429c47342”或
它的某一個依賴項。系統找不到指定的文件。

解決:說明gac或者Oracle.DataAccess引用路徑異常,建議把文件copy到發布的bin目錄.

2. 如果報錯

未處理的異常: System.TypeInitializationException: “Oracle.DataAccess.Client.Or
acleConnection”的類型初始值設定項引發異常。 ---> Oracle.DataAccess.Client.Oracl
eException The provider is not compatible with the version of Oracle client
在 Oracle.DataAccess.Client.OracleInit.Initialize()
在 Oracle.DataAccess.Client.OracleConnection..cctor()
--- 內部異常堆棧跟蹤的結尾 ---
在 Oracle.DataAccess.Client.OracleConnection..ctor(String connectionString)
在 ConsoleApplication2.Program.Main(String[] args)

解決:這說明oracle依賴的dll環境加載不正確,開發端可能安裝的odp版本和服務器不一致.或者客戶端缺少oracle運行的動態庫.開發端建議重新安裝一致版本或者重新進行oracle.dataaccess的gac配置.

3. 客戶端

客戶端如果不想安裝odp.net,則必須在成功連接服務器的開發端的odp安裝路徑中復制出以下文件放到發布應用程序運行目錄.

至於oracle.dataaccess.dll是否注冊到客戶端的gac,我測試過,都可以.

文件清單:

oci.dll

ociw32.dll

orannzsbb11.dll

oraocci11.dll

oraociei11.dll

bin\OraOps11w.dll

odp.net\x\Oracle.DataAccess.dll(x表示省略路徑)

 

enjoy!


net連接oracle數據庫哪種方式好些

放心使用吧,那些所謂小問題都是由於自己的連接沒有建立好,底層數據訪問的程序沒有寫穩定。如果連數據連接都不穩定微軟可以去死了。呵呵
 

Net連接Oracle數據庫到底怎配置

C#連接Oracle數據庫(查詢數據)

using System;
using System.Collections.Generic;
using System.ComponentModel;
//這行和下一行都要先在引用中填加system.data.oracleclient
using System.Data.OracleClient;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace WindowsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

private void button1_Click(object sender, EventArgs e)
{
#region 從region到endregion是手工寫的。別的都是系統自動生成的
//定義連接數據庫的字符串
string constring = "data source=wzd;user=wzd;password=wzd;";
//進行連接
OracleConnection conn = new OracleConnection(constring);
try
{
conn.Open();//打開指定的連接
OracleCommand com = conn.CreateCommand();
//寫好想執行的Sql語句
com.CommandText =
"select name from mytable where card_no='0000000002'";
OracleDataReader odr = com.ExecuteReader();
//讀取數據,如果返回為false的話,就說明到記錄集的尾部了
while (odr.Read())
{
//將讀取到的值顯示到定義的控件中。
this.lbl.Text = odr.GetOracleString(0).ToString();
}
odr.Close();//關閉reader.這是一定要寫的
}
catch
{
Messa......余下全文>>
 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved