要相使用 Oracle Data Provider For .NET(ODP.NET),
必須先安裝 ODP.NET 或者是 ODAC(Oracle Data Access Components)
(ODAC 中包含 ODP.NET 這個組件)
最好是把 ODT.NET 也安裝上,這樣,以後在 Visual Studio 中開發 Oracle 應用程式會方便很多的,
還是提供一個吧,
http://www.oracle.com/technology/global/cn/software/tech/windows/odpnet/index.html
如果還沒有安裝的朋友請參考筆者前面的一些博文,其中都有比較好的介紹的,
本篇博文呢,將會完成一個 Demo ,這個 Demo 呢是從 Sql Server 中取出指定的資料表中的資料,
然後逐條將這些取出的資料插入到 Oracle 資料庫中的指定表中,
其中呢,對 Sql Server 資料庫的訪問我就不說了,
對 Oracle 的訪問呢,主要是通過 ODP.NET 來實現的,
前面的一篇博文<<通過 Reflector 工具來查看 ODP.NET 提供的類等資訊>>
介紹了ODP.NET 中的一些類和命名空間,
在這一篇博文中就是使用這些類來完成 Demo ,當然涉及的類將會是很簡單的最基本的類,
也就是 Connection,Command ,DataAdaptor 這些,
如果您需要使用 ODP.NET 下的其他一些類的話,
您可以使用 Reflector 來反射出 Oracle.DataAccess.dll 中的內容,
首先要想在應用程式中使用 ODP.NET 來訪問 Oracle 資料庫的話,
您必須向當前的應用程式添加一個引用,
這個 Oracle.DataAccess 必須是在您安裝了 Oracle Data Provider For .NET 後才可以引用,
添加了這個引用後,便可以來使用 Oracle.DataAccess 這個命名空間和其子內容了,
先來看頁面設計吧,
其中對 SqlDataSource 進行的資料繫結操作按如下順序進行
其中 SCOTT.ORACLE 便是我通過 ODP.NET 來與 Oracle 建立的一個資料庫連接,
然後就是來看一下 Web.config 中的資料庫連接字串的設定吧
其中呢,包括一個 Oracle 資料庫連接字串(OracleScott)
也包括一個 SqlServer 資料庫連接字串(SqlServerCon)
然後就來看 Code-Behind 了
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data.SqlClient;
using System.Data;
using Oracle.DataAccess.Client;
using Oracle.DataAccess.Types;
using Oracle.DataAccess;
using System.Web.Configuration;
namespace WebForm
{
public partial class Demo__39 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void btnAddData_Click(object sender, EventArgs e)
{
//擷取 web.config 中的串連 SqlServer 資料庫的字串
string sqlServerConStr =
WebConfigurationManager.ConnectionStrings["SqlServerCon"].
ConnectionString;
//擷取 web.config 中串連 Oracle 資料庫的字串
string oracleConStr =
WebConfigurationManager.ConnectionStrings["OracleSCOTT"].
ConnectionString;
//先是取出 SQL Server 中的資料,並且存放在 DataSet 中
DataSet ds = new DataSet();
using (SqlConnection sqlCon = new SqlConnection(sqlServerConStr))
{
using (SqlCommand sqlCom = sqlCon.CreateCommand())
{
string sqlStr =
"SELECT 員工號碼,姓名,性別,目前工資 FROM 章立民研究室";
sqlCom.CommandType = CommandType.Text;
sqlCom.CommandText = sqlStr;
using (SqlDataAdapter sqlDA = new SqlDataAdapter(sqlCom))
{
//將資料全部存入 DataSet 資料集中
sqlDA.Fill(ds);
}
}
}
using (OracleConnection oracleCon = new OracleConnection(oracleConStr))
{
oracleCon.Open();
using (OracleCommand oracleCom = oracleCon.CreateCommand())
{
oracleCom.CommandType = CommandType.Text;
for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
{
//從 DataSet 逐條檢索資料並且儲存到 Oracle 資料表 Employee
string sqlStr = String.Format(
"INSERT INTO EMPLOYEE(EMPID,EMPNAME,EMPSEX,EMPSALARY) " +
"VALUES({0},'{1}','{2}',{3})",
ds.Tables[0].Rows[i][0],
ds.Tables[0].Rows[i][1],
ds.Tables[0].Rows[i][2],
ds.Tables[0].Rows[i][3]);
oracleCom.CommandText = sqlStr;
oracleCom.ExecuteNonQuery();
}
}
}
//只能從資料庫中取一次資料
btnAddData.Enabled = false;
}
}
}
下面就來看效果了,
下面的是還沒有從 Sql Server 中拷貝資料到 Oracle 資料庫之前,
Oracle 中本來的資料,
執行拷貝資料後的結果為
如此便成功實現了使用 ODP.NET 訪問 Oracle 資料庫了!!!