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!
放心使用吧,那些所謂小問題都是由於自己的連接沒有建立好,底層數據訪問的程序沒有寫穩定。如果連數據連接都不穩定微軟可以去死了。呵呵
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......余下全文>>