掃二維碼與項目經(jīng)理溝通
我們在微信上24小時期待你的聲音
解答本文疑問/技術(shù)咨詢/運營咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流
用過VS2005和VS2008的開發(fā)人員肯定知道在安裝這個IDE的時候會自動安裝了一個精簡版的SQL數(shù)據(jù)庫服務(wù)SqlExpress,這個數(shù)據(jù)庫系統(tǒng)少了最重要的企業(yè)管理器,也就是說不能用它來建數(shù)據(jù)表和一些可視化操作。如果碰到項目中要用到SQL數(shù)據(jù)庫的時候也不能附加到數(shù)據(jù)庫服務(wù)里面去,導(dǎo)致項目在連接數(shù)據(jù)庫的時候會提示找不到數(shù)據(jù)庫文件而讀取失敗。那么,這個精簡版的SQL數(shù)據(jù)庫服務(wù)是不是意味著一無是處呢?

其實未必,只要我們在連接數(shù)據(jù)庫的時候利用好它就可以了~~
在這里我介紹兩種C#中連接數(shù)據(jù)庫的方法。一種需要附加數(shù)據(jù)庫,一種則不要,只需要安裝這個精簡版的SQL就可以了…
方法一:
連接代碼:
string strconn;
strconn = "Data Source=(local);";
strconn += "Initial Catalog=student;";
strconn += "User ID=sa;";
strconn += "Password=;";
SqlConnection con = new SqlConnection(strconn);
//通過用戶名和密碼連接數(shù)據(jù)庫
//SqlConnection con = new SqlConnection("Data Source=(local);
Initial Catalog=library;Integrated Security=True");
//通過系統(tǒng)用戶驗證連接數(shù)據(jù)庫
con.Open();
SqlDataAdapter thisadapter = new SqlDataAdapter
("select * from reader where 條形碼='" + txm + "'", con);
SqlCommandBuilder thisbuilder = new SqlCommandBuilder(thisadapter);
DataSet thisdataset = new DataSet();
thisadapter.Fill(thisdataset, "reader");
…… //接下去就是對數(shù)據(jù)的操作了
|
這種方法必須要附加數(shù)據(jù)庫文件才可以訪問…
優(yōu)點是可以通過企業(yè)管理器直接對數(shù)據(jù)庫進行可視化操作,比如對記錄進行全權(quán)修改…萬一碰到數(shù)據(jù)有錯誤,在系統(tǒng)里面不好修改的時候可以進行強制維護。同時,如果后期更新系統(tǒng),增加新的數(shù)據(jù)庫需求,比如增加字段就可以在里面操作。
當(dāng)然這也算是缺點,亂改數(shù)據(jù)可能導(dǎo)致破壞數(shù)據(jù)庫的一些規(guī)則和數(shù)據(jù)一致性,嚴(yán)重的話會導(dǎo)致災(zāi)難性的數(shù)據(jù)崩潰。
方法二:
連接代碼:
SqlConnectionStringBuilder connectstringbuilder =
new SqlConnectionStringBuilder();
connectstringbuilder.DataSource = @"(local)\sqlexpress";
//指定數(shù)據(jù)庫服務(wù)
connectstringbuilder.AttachDBFilename=@"|DataDirectory|\data\library.mdf";
//數(shù)據(jù)庫文件,采用相對地址的方式來指定。注意格式
connectstringbuilder.IntegratedSecurity = true;
connectstringbuilder.UserInstance = true;
SqlConnection thisconnection =
new SqlConnection(connectstringbuilder.ConnectionString);
SqlDataAdapter thisadapter =
new SqlDataAdapter
("select * from reader where 條形碼='" +txm + "'", thisconnection);
DataSet dt = new DataSet();
thisadapter.Fill(dt, "info");
……//接下去就是對數(shù)據(jù)的操作了
|
這個方法最大的有點就是允許我們不用安裝600M(MSSQL2000)或者1G(MSSQL2005)的數(shù)據(jù)庫系統(tǒng),只需要安裝SQL精簡版的數(shù)據(jù)庫服務(wù)(22M左右)就可以了。而且不用去附加數(shù)據(jù)庫…
但是這種優(yōu)點也帶來致命的缺點,就是第一次連接數(shù)據(jù)庫的時候會有點慢,這不要緊,但它會重新格式數(shù)據(jù)庫文件的一些結(jié)構(gòu),導(dǎo)致一些數(shù)據(jù)格式發(fā)生變化,因此連接之后這樣的數(shù)據(jù)庫文件是不能再次被附加到數(shù)據(jù)庫系統(tǒng)中的(會報錯)。也就是說后期如果要修改數(shù)據(jù)庫,比如增加字段和表等是不太可能實現(xiàn)的。
不過這也在一定的程度上帶來了安全性。
以上這兩種數(shù)據(jù)庫連接方式各有千秋,是否要使用就看你的系統(tǒng)實際應(yīng)用需求了…
(注:這兩種方法在VS2005+MSSQL調(diào)試通過…)
【編輯推薦】

我們在微信上24小時期待你的聲音
解答本文疑問/技術(shù)咨詢/運營咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流