原文地址:
使用SQL鏈接服務器遠程訪問Oracle數據庫
在本機上通過SQL數據庫的鏈接服務器的方式,遠程訪問Oracle數據庫
這樣使用一個Sql的連接,就可以訪問 Sql Server , Oracle , Access等多種數據庫了。
條件:
1 oracle數據庫安裝在其它機器上
2 本機上安裝oracle客戶端(如果是新裝的客戶端,必須重啟電腦才能選擇 Oracle Provider for OLE DB)
3 本機安裝SQL數據庫
對於 SQL建立鏈接服務器的方法,詳細參見以下博文
一 本機電腦上Oracle 客戶端服務配置
1 在電腦上安裝Oracle 客戶端
2 創建Oracle 客戶端服務
開始 -- Oracle - OraClient10g_home1 -- 配置和移植工具 -- Net Manager
3 創建服務名
左側欄 展開到 Oralce Net配置 -- 本地 -- 服務命名 。
右擊創建一個名為:
svrtsm1wind 服務名
4 配置遠程的地址
右側欄,
服務標識:
服務名:wind 就是遠程機器上Oracle中一個數據庫的名稱
地址配置:
協議:tcp/ip
主機名:svrbbdb2 就是遠程主機的名稱
端口號:1521
將來就能通過 svrtsm1wind 遠程訪問 機器svrbbdb2 上的數據庫 wind,端口號為1521

二 本機Sql Server數據庫上 配置 Oralce 服務鏈接器
1 啟動SQL數據庫
2 展開 數據庫 -- 服務器對象 -- 鏈接服務器
3 右擊 鏈接服務器 -- 新建鏈接服務器, 彈出配置屬性畫面,
在“常規”中的 鏈接服務器:
svrtsm1wind
這是引用鏈接服務器時將使用的名稱,就是后面在程序中使用的鏈接名稱
服務類型選擇 其他數據源
訪問接口:Microsoft OLE DB Provider for Oracel 或 Oracle Provider for OLE DB (如果是新裝的客戶端,必須重啟電腦才能選擇)
產品名稱:Oracle
數據源:
svrtsm1wind 就是上面步驟一創建的Oracle 服務的網絡名稱。

4 在“安全性”中,本地登錄輸入 sa 遠程用戶 wcadmin 遠程密碼:wcadmin

5 使用此安全上下文建立連接 遠程用戶 wcadmin 使用密碼:wcadmin
注意: wcadmin就是遠程機器上Oracle的數據庫的用戶和密碼
6 右擊 剛建立的 svrtsm1wind -- 測試連接, 直到成功為止
三 C#中有關操作數據庫的語句
以下使用的就是 Sql Server 中創建的鏈接服務器
svrtsm1wind
1 插入語句
string strinsert = string.Format("insert into openquery(
svrtsm1wind,'select name,age from tb') values('{0}',{1})", FLHAO, 4);
DbHelper.ExecuteSql(strinsert);
2 修改語句
string strupdate = string.Format("update openquery(
svrtsm1wind,'select name,age from tb ') set age={0} where name='{1}'", 5, FLHAO);
DbHelper.ExecuteSql(strupdate);
3 刪除語句
StringBuilder strSql = new StringBuilder();
strSql.Append("delete from openquery(
svrtsm1wind,'select * from tb') where id=1");
int rows = DbHelper.ExecuteSql(strSql.ToString());
4 查詢語句
string strSql = "select * from openquery(
svrtsm1wind,'select max(id) as xuhao from tb');";
DataTable dt = DbHelper.Query(strSql).Tables[0];
5 操作類
public partial class DbHelper
{
/// 數據庫連接字符串
private static string m_connectionString = null;
public static string ConnectionString
{
get
{
if (m_connectionString == null)
{
m_connectionString = WebConfigurationManager.ConnectionStrings["
OracleConnection"].ToString();
}
return m_connectionString;
}
set
{
m_connectionString = value;
}
}
public static int ExecuteSql(string SQLString)
{
using (SqlConnection connection = new SqlConnection(ConnectionString))
{
using (SqlCommand cmd = new SqlCommand(SQLString, connection))
{
try
{
connection.Open();
int rows = cmd.ExecuteNonQuery();
return rows;
}
catch (System.Data.SqlClient.SqlException E)
{
connection.Close();
throw new Exception(E.Message);
}
}
}
}
public static DataSet Query(string SQLString)
{
using (SqlConnection connection = new SqlConnection(ConnectionString))
{
DataSet ds = new DataSet();
try
{
connection.Open();
SqlDataAdapter command = new SqlDataAdapter(SQLString, connection);
command.Fill(ds, "ds");
}
catch (System.Data.SqlClient.SqlException ex)
{
throw new Exception(ex.Message);
}
return ds;
}
}
}
四 配置 web.config,針對自己的Sql數據庫
自己電腦
my_pc上SQL的一個數據庫
my_sql_db 的連接
OracleConnection ,通過它就可以遠程訪問Oracle
< ?xml version="1.0"?>
< configuration>
< connectionStrings>
< add name="
OracleConnection" connectionString="server=
my_pc;uid=sa;pwd=;database=
my_sql_db;Pooling=true;"/>
< /connectionStrings>
< /configuration>