1‧下載Oracle 的ODAC
由於水務署通常使用的系統、設備都![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjACp9ysMsTDF1JzcDCiu4CTgL2Y6JSokzQcXZ0i-l78DFstu0xoOWi5ZRDLuqDZRsBCrn5G3aXodthZNJKIIPj9FYJuiEH7kbzSd2jDGEI5jl3uSDJQ9A9fBH2xI5bpFcptUgS6ZbTeNgI/s400/oracle2.png)
2‧將已下載的檔案unzip、並將下圖的file轉移至Visual Studio的專案內
只有Oracle.DataAccess.dll能夠成為reference,其餘3個file只需放在一起便可。專案的佈局便大致完成。![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjEXA9hHoVJ0mdH_Gsyk_sHpa2Y_sFR5lMreQq_5EvKoS6Og6ghzvd-lcx_QnD5WjAaq_iAKm9-DHFglXm-hTrh7EAgIbv9pWQMjNow-fgb6S0GJckL5BkYHcGE05pcBoTc50Apge1HR8zg/s640/oracle1.png)
3‧創建一個Class(類)
個人習慣,沒有什麼可以解釋。class OracleData
{
private string equip_no;
private string location_code;
private DateTime comm_date;
private int maint_threshold;
private string description;
private int interval;
public OracleData()
{
// TODO: Complete member initialization
}
public string GetEquipNo()
{
return equip_no;
}
public void SetEquipNo(string eq_no)
{
equip_no = eq_no;
}
public string GetLocationCode()
{
return location_code;
}
public void SetLocationCode(string loc_code)
{
location_code = loc_code;
}
public DateTime GetCommDate()
{
return comm_date;
}
public void SetCommDate(DateTime comm_dt)
{
comm_date = comm_dt;
}
public int GetThreshold()
{
return maint_threshold;
}
public void SetThreshold(int threshold)
{
maint_threshold = threshold;
}
public string GetDescription()
{
return description;
}
public void SetDescription(string desc)
{
description = desc;
}
public int GetInterval()
{
return interval;
}
public void SetInterval(int interv)
{
interval = interv;
}
}
4‧引用Oracle.DataAccess.dll
using Oracle.DataAccess.Client;
5‧Connection String設定
跟SQL Server及MySQL 大致相同 (Username、Password、Host IP、Port),唯一分別是SID,但不一定要使用SID,SERVICE_NAME也可以使用,視乎Server設定如果server為Express,SERVICE_NAME為XE;如果想直接引用tnsnames.ora,Datasource=ora內的名稱即可。
string connString = "Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=" + oracleIP + ")(PORT=" + oraclePort + ")))" +
"(CONNECT_DATA=(SID=" + oracleServiceID + ")));" +
"User id=" + oracleUserName + ";" +
"Password=" + oraclePassword + ";";
6‧將Oracle 內的Data 打包
query跟SQL Server及MySQL 大致相同,我就不作解釋了,下面的Code大約就是將 Oracle 內的Data加進自訂的List<OracleData>裡面,以便調用。*DBNull.Value的使用就是防止data field的值是(null)而產生的錯誤。*
*最好將下面的code放進try block以便debug,因為不一定第一次做就能夠成功(你明白的‧‧‧)*
OracleConnection conn = new OracleConnection(connString);
OracleCommand cmd = new OracleCommand(query, conn);
cmd.CommandTimeout = 1200;
conn.Open();
OracleDataReader dr = cmd.ExecuteReader();
List<OracleData> content = new List<OracleData>();
while (dr.Read()) {
OracleData od = new OracleData();
od.SetEquipNo(dr[0].ToString());
od.SetLocationCode(dr[1].ToString());
od.SetCommDate(Convert.ToDateTime(dr[2]));
if (!DBNull.Value.Equals(dr[3]))
{
od.SetThreshold(Convert.ToInt32(dr[3]));
}
else
{
od.SetThreshold(0);
}
od.SetDescription(dr[4].ToString());
if (!DBNull.Value.Equals(dr[5]))
{
od.SetInterval(Convert.ToInt32(dr[5]));
}
else
{
od.SetInterval(0);
}
content.Add(od);
}
conn.Close();
C# 連接 Oracle Database 就大致完成了!!
沒有留言:
張貼留言
注意:只有此網誌的成員可以留言。