用ASP.NET連接Oracle9i(ASP.NET1.1)
ASP.NET連接Oracle9i采用的方法:利用using System.Data.OracleClient;與添加引用System.Data.OracleClient,版本為1.0.5000.0,來連接oracle數(shù)據(jù)庫。
前提:至少安裝ORAcle9I的客戶端,并在“控制面板-〉管理工具-〉服務(wù)”中打開oracle的監(jiān)聽程序。
具體作法,首先必須將oralce的TNSNAMES.ORA文件中設(shè)定數(shù)據(jù)源名稱。例如
ASP.NET連接Oracle9i代碼范例:
- MYORACLE =
- (DESCRIPTION =
- (ADDRESS_LIST =
- (ADDRESS = (PROTOCOL = TCP)(HOST = SOFTSTAR)(PORT = 1521))
- )
- (CONNECT_DATA =
- (SERVICE_NAME = myoracle)
- )
- )
- ORA =
- (DESCRIPTION =
- (ADDRESS_LIST =
- (ADDRESS = (PROTOCOL = TCP)(HOST = 210.43.104.131)(PORT = 1521))
- )
- (CONNECT_DATA =
- (SERVICE_NAME = ora)
- )
- )
然后,修改oracle目錄下的文件SQLNET.ORA為
- SQLNET.AUTHENTICATION_SERVICES= (NTS)
- NAMES.DIRECTORY_PATH= (TNSNAMES,HOSTNAME,ONAMES)
注意,主要是要在NAMES.DIRECTORY_PATH中添加TNSNAMES參數(shù)。
這樣,在cmd中執(zhí)行tnsping ora或者myoracle就不會出錯。
最后,如果要連遠(yuǎn)程數(shù)據(jù)庫,那么就必須檢查遠(yuǎn)程oralce數(shù)據(jù)庫的安裝目錄中的LISTENER.ORA文件,確定類似下文。
- LISTENER =
- (DESCRIPTION_LIST =
- (DESCRIPTION =
- (ADDRESS_LIST =
- (ADDRESS = (PROTOCOL = TCP)(HOST = SOFTSTAR)(PORT = 1521))
- )
- )
- )
- SID_LIST_LISTENER =
- (SID_LIST =
- (SID_DESC =
- (GLOBAL_DBNAME = myoracle)
- (SID_NAME = myoracle)
- )
- )
這個文件的內(nèi)容可以用oracle自帶的net configuration assistant的工具修改,即修改“監(jiān)聽程序”和“本地網(wǎng)絡(luò)服務(wù)名配置”。
問題解決辦法:如果報"ORA-12154: TNS: 無法處理服務(wù)名",應(yīng)該先查本機(jī)的sqlnet.ora,看看NAMES.DIRECTORY_PATH是否為(TNSNAMES),如果是,再查本機(jī)的tnsnames.ora中是否包含了那個服務(wù)名。
附帶幾個命令:lsnrctl status 和 tnsping 數(shù)據(jù)源名
附帶ASP.NET連接Oracle9i程序源碼片斷
- using System;
- using System.Collections;
- using System.ComponentModel;
- using System.Data;
- using System.Drawing;
- using System.Web;
- using System.Web.SessionState;
- using System.Web.UI;
- using System.Web.UI.WebControls;
- using System.Web.UI.HtmlControls;
- using System.Data.OracleClient;
- namespace WebApplication1
- {
- /// < summary>
- /// testConnOracle 的摘要說明。
- /// < /summary>
- public class testConnOracle : System.Web.UI.Page
- { private void Page_Load(object sender, System.EventArgs e)
- {
- // 在此處放置用戶代碼以初始化頁面
- ConnectToOracle();
- }
- public void ConnectToOracle()
- {
- OracleConnection conn = new OracleConnection ();//定義oracle連接
- //下面是設(shè)定連接字符串,其中,data source填上數(shù)據(jù)庫名,即在上文TNSNAMES.ORA
- //中出現(xiàn)的數(shù)據(jù)源(MYORACLE或者ORA)或者服務(wù)名(myoracle或者ora)
- conn.ConnectionString = "user id=system;data source=ora;password=els;";
- try
- {
- conn.Open();
- OracleCommand cmd= new OracleCommand("select * from HR.TEST",conn);
- DataSet ds = new DataSet();
- OracleDataAdapter oda=new OracleDataAdapter();
- oda.SelectCommand=cmd;
- oda.Fill(ds);
- DataGrid1.DataSource=ds.Tables[0].DefaultView;
- DataGrid1.DataBind();
- Response.Write("Success!");
- }
- catch (Exception ex)
- {
- Response.Write(ex.Message);
- }
- finally
- {
- conn.Close();
- }
- }
另外,可以在VS2003中拖出一個OracleConnection來測試,是否能與oralce數(shù)據(jù)庫連上。
最后,附上可能有用的鏈接
http://community.csdn.net/Expert/topic/4443/4443598.xml?temp=.3260309
http://bbs.chinaunix.net/archiver/?tid-651387.html
http://community.csdn.net/Expert/topic/4634/4634614.xml?temp=.5633051
http://blog.csdn.net/hiyaolee/archive/2005/10/20/509767.aspx
http://blog.csdn.net/xmltea/archive/2005/01/24/265754.aspx
【編輯推薦】