C# 與sybase 資料庫的串連
前言
Ado.net附帶了4個資料庫客戶命名空間,一個用於SQL Server,另一個用於Oracle,第三個用於ODBC資料來源,第四個用於通過OLEBC實現資料庫。如果資料庫不是SQL Server或Oracle,就應該使用OLE DB,除非還能使用ODBC。
註:以上引自《c#進階編程》第三版清華大學出版社[ISBN 7-302-10199-X/TP ﹒6975 2005年12月第2次印刷]
由上可知,目前C#與sybase資料庫的串連有2種方式
l 通過OLEBC
l 通過ODBC
通過OLEBC實現:
需要一個sybase OLEDB 驅動程式(這個可以去網上下載)。具體實現如下:
第一種方法:
1、 首先要在工程裡面引用:using System.Data.OleDb;
2、 定義一個串連串:
ConnStr= "Provider=Sybase.ASEOLEDBProvider;Server Name="150.1.1.10,8888";Initial Catalog=ismiswebdb;User Id=ismiswebdb;Password=ismiswebdba";
註:
(1) Server Name:指的是伺服器的ip地址和連接埠號碼,中間用“,”隔開。
(2) Initial Catalog:是資料庫伺服器的名稱
(3) User Id:是資料庫的登入名稱。
(4) Password:是資料庫的密碼
3、 定義一個OleDbCommand變數:thisCommand
4、 定義一個OleDbDataReader變數:thisReader
5、 在需要跟資料連線的函數裡面如下寫即可:
try
{
OleDbCommand thisCommand = thisConnection.CreateCommand();
thisCommand.CommandText = "select id,investtype,deptcode,loginname,password,realname,tel,note,rules from is_user where loginname = '" + loginName + "' and password = '" + passWord + "' and rules < 3";
OleDbDataReader thisReader = thisCommand.ExecuteReader();
//迴圈,產生鏈表結構
while (thisReader.Read())
{
cGetUserInfo.ID = thisReader[0].ToString();
cGetUserInfo.InvestType = thisReader[1].ToString();
cGetUserInfo.DeptCode = thisReader[2].ToString();
cGetUserInfo.LoginName = thisReader[3].ToString();
cGetUserInfo.PassWord = thisReader[4].ToString();
cGetUserInfo.RealName = thisReader[5].ToString();
cGetUserInfo.Tel = thisReader[6].ToString();
cGetUserInfo.Note = thisReader[7].ToString();
cGetUserInfo.Rules = thisReader[8].ToString();
userInfoArray.Add(cGetUserInfo);
}
thisReader.Close();
}
catch
{
}
^_^,是不是很簡單。
第二種方法:
1、 開啟下載的sybase OLEDB 驅動程式裡面的syboledb.reg檔案,是其路徑與所安裝的路徑一致(用滑鼠右鍵點擊syboledb.reg檔案,選擇編輯,可查看其路徑)。
註:當然也可以不修改預設值,按其顯示的路徑,把下載的驅動(檔案夾Sybase OLEDB)直接放在C:盤根目錄下即可。然後用滑鼠左鍵雙擊syboledb.reg檔案,進行註冊。
1、 開啟Sybase OLEDB檔案夾下的sydaadm.exe檔案,選擇[File]->[New]->[Data Source]
2、 輸入Data Source Name(自己定義)。
3、 點擊【Set Up Data Source】按鈕,輸入伺服器IP地址和連接埠號碼。
為了以防萬一,可點擊【Test Connect】按鈕進行串連測試。(當然,測試時還要輸入使用者名稱、口令)
到此,你的OLEDB已經設定完成,使用者可以使用C#與sybase進行串連了。
在程式中具體實現的代碼如下:
String SelectCmd = “select * from table”;
String connStr=”Provider=Sybase.ASEOLEDBProvider.2;”
+ “Data Source=web_pptc;Password=webpptcdba;User ID=webpptc”;
dataAdapter = new OleDbDataAdapter(SelectCmd, connStr);
……
……
更方便的方法為:你的Server Name(伺服器IP地址)和連接埠好可以在connStri裡制定,具體請到網上搜尋吧^_^.
通過ODBC
1.在伺服器上安裝Sybase用戶端,配置Dsedit,如下圖:
2.配置ODBC的系統DSN,如下圖:
注意:Data Source Name名字自己隨便起,但Server Name 一定要與步驟1所起的Server Name一致。
至此,ODBC的配置已結束,其在程式種的代碼實現如下:
string strODBCConn = "Driver={SYBASE SYSTEM 11};Srvr=test;Uid=webpptc;Pwd=webpptcdba;DB=web_pptc"; // web_pptc是資料庫名稱
OdbcConnection oLogConn;
OdbcCommand oLogCmd;
string strSql = "select dwjm_c,ky_c from jh001";
oLogConn = new OdbcConnection(strODBCConn);
oLogCmd = new OdbcCommand(strSql, oLogConn);
oLogConn.Open();
myLogDataReader = oLogCmd.ExecuteReader(CommandBehavior.CloseConnection);
while (myLogDataReader.Read())
{
……
在此,可通過while迴圈來獲得所查詢的欄位值:
例如:String strGetValue = myLogDataReader[0].ToString();
}