在實際工作中,我們可能會遇到在同乙個程式中鏈結多套結構相同的資料庫的情況,雖然我認為這並不是好的設計,但是這也許並不在你的控制之中,比如你的公司有兩個客戶,用同一套系統,如果不把他們的庫分開,可能會帶來功能設計上的困難和資料的混亂,所以產生了兩套資料庫,結構一模一樣,只是資料不同。現在你要設計乙個對外介面給別的程式使用,程式有可能會請求a庫的資料,也有可能會請求b庫的資料,這如何去做呢?
顯而易見,使用不同的連線字串就ok了,但要讓**更工整一些,就得稍微花點點心思。下面是我寫的demo的截圖:
首先在本地的sql express中建立幾個簡單的用於測試的資料庫,再建立一張簡單的表,然後隨便插入兩條簡單的記錄:
createdatabase
testdb1
gouse
testdb1
gocreate
table
tb_user (
user_id
intidentity
,
user_name
nvarchar(20) not
null
, real_name
nvarchar(25) not
null
, descriptions
nvarchar(400) null,)
goinsert
into tb_user(user_name, real_name, descriptions) values('
jgg', '
蔣國綱', '碼農'
)insert
into tb_user(user_name, real_name) values('
zs', '張三'
)gocreate
database
testdb2
gouse
testdb2
gocreate
table
tb_user (
user_id
intidentity
,
user_name
nvarchar(20) not
null
, real_name
nvarchar(25) not
null
, descriptions
nvarchar(400) null,)
goinsert
into tb_user(user_name, real_name, descriptions) values('
us', '
uncle sam
', '
美國佬'
)insert
into tb_user(user_name, real_name) values('
jp', '
小日本')go
create
database
testdb3
gouse
testdb3
gocreate
table
tb_user (
user_id
intidentity
,
user_name
nvarchar(20) not
null
, real_name
nvarchar(25) not
null
, descriptions
nvarchar(400) null,)
goinsert
into tb_user(user_name, real_name, descriptions) values('
abcd
', '
efg', '
hijklmn')
insert
into tb_user(user_name, real_name, descriptions) values('
opq', '
rst', '
uvwxyz')
go
xml version="1.0" encoding="utf-8"?>
<
configuration
>
<
connectionstrings
>
<
add
name
="testdb1"
connectionstring
="data source=.\sqlexpress;initial catalog=testdb1;integrated security=true"
providername
="system.data.sqlclient"
/>
<
add
name
="testdb2"
connectionstring
="data source=.\sqlexpress;initial catalog=testdb2;integrated security=true"
providername
="system.data.sqlclient"
/>
<
add
name
="testdb3"
connectionstring
="data source=.\sqlexpress;initial catalog=testdb3;integrated security=true"
providername
="system.data.sqlclient"
/>
connectionstrings
>
configuration
>
using其中使用了activator,activator會根據傳入的type來建立對應的datacontext例項,當然你也可以使用泛型;另外如果傳入的連線字串的名稱不存在於配置檔案中的話就使用預設的鏈結,即建立datacontext的時候不帶引數。system;
using
system.data.linq;
using
system.diagnostics;
using
system.configuration;
namespace
multidbmsconnectionsdemo
catch
(exception)
return
(datacontext)activator.createinstance(typedatacontext, strdbconn);}}
}
這是例子:
//小技巧,希望能夠讓你的**better一些。一般的做法是:
//linquserdatacontext db = new linquserdatacontext();
//而現在是:
linquserdatacontext db = (linquserdatacontext) datacontextfactory.create(typeof(linquserdatacontext), combodbmschoosing.text);
**中使用了乙個linq to sql的幫助類,具體可以參考我另一篇blog:linq to sql使用教程
使用Flask SQLAlchemy連線多個資料庫
usr bin env python coding utf 8 from flask import flask from flask sqlalchemy import sqlalchemy 配置多個資料庫連線 sqlalchemy binds sqlalchemy database uri sql...
LINQ to SQL 資料庫連線
首先建立乙個mvc專案 這裡注意如果沒這個包 linq to sql 類 的話,那就是你安裝vs的時候沒有安裝需要去修改找到這個檔案安裝一下 新增之後 就可以開始連線資料庫了 選擇你需要連線的資料庫 然後吧表拖到dbml 然後新增控制器 我在控制器裡寫了乙個方法 例子,這個時候還需要去配置連線字串,...
SQL中表的連線,LINQTOSQL中表的連線
表的連線分為,內連線與外連線。外連線分為左外連線,右外連線。左連線是已左邊表中的資料為基準,若左表有資料右表沒有資料,則顯示左表中的資料右表中的資料顯示為空 sql 內連線 select from a,b where a.aid b.aid a,b表連線,a,b中均有的資料才顯示 左外連線 sele...