用過VS2008和VS2010的開發人員肯定知道在安裝這個IDE的時候會自動安裝了一個精簡版的SQL數據庫服務SqlExpress,這個數據庫系統少了最重要的企業管理器,也就是說不能用它來建數據表和一些可視化操作。如果碰到項目中要用到SQL數據庫的時候也不能附加到數據庫服務裡面去,導致項目在連接數據庫的時候會提示找不到數據庫文件而讀取失敗。那麼,這個精簡版的SQL數據庫服務是不是意味著一無是處呢?
其實未必,只要我們在連接數據庫的時候利用好它就可以了~~
在這裡我介紹兩種C#中連接數據庫的方法。一種需要附加數據庫,一種則不要,只需要安裝這個精簡版的SQL就可以了…
方法一:
連接代碼:
string strconn;
strconn = "Data Source=(local);";
strconn += "Initial Catalog=student;";
strconn += "User ID=sa;";
strconn += "Password=;";
SqlConnection con = new SqlConnection(strconn); //通過用戶名和密碼連接數據庫
//SqlConnection con = new SqlConnection("Data Source=(local);Initial Catalog=library;Integrated Security=True"); //通過系統用戶驗證連接數據庫
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");
…… //接下去就是對數據的操作了
這種方法必須要附加數據庫文件才可以訪問…
優點是可以通過企業管理器直接對數據庫進行可視化操作,比如對記錄進行全權修改…萬一碰到數據有錯誤,在系統裡面不好修改的時候可以進行強制維護。同時,如果後期更新系統,增加新的數據庫需求,比如增加字段就可以在裡面操作。
當然這也算是缺點,亂改數據可能導致破壞數據庫的一些規則和數據一致性,嚴重的話會導致災難性的數據崩潰。
方法二:
連接代碼:
SqlConnectionStringBuilder connectstringbuilder = new SqlConnectionStringBuilder();
connectstringbuilder.DataSource = @"(local)/sqlexpress"; //指定數據庫服務
connectstringbuilder.AttachDBFilename = @"|DataDirectory|/data/library.mdf"; //數據庫文件,采用相對地址的方式來指定。注意格式
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");
…… //接下去就是對數據的操作了
這個方法最大的有點就是允許我們不用安裝600M(MSSQL2000)或者1G(MSSQL2005)的數據庫系統,只需要安裝SQL精簡版的數據庫服務(22M左右)就可以了。而且不用去附加數據庫…
但是這種優點也帶來致命的缺點,就是第一次連接數據庫的時候會有點慢,這不要緊,但它會重新格式數據庫文件的一些結構,導致一些數據格式發生變化,因此連接之後這樣的數據庫文件是不能再次被附加到數據庫系統中的(會報錯)。也就是說後期如果要修改數據庫,比如增加字段和表等是不太可能實現的。
不過這也在一定的程度上帶來了安全性。
以上這兩種數據庫連接方式各有千秋,是否要使用就看你的系統實際應用需求了…
(注:這兩種方法在VS2008+MSSQL調試通過…)
A32 是排列 C32 是組合
比如A32 就是3乘以2 等於6
A 6 3 就是6*5*4
就是從大數開始乘後面那個數表示有多少個數 A 7 2 等於 7*6* 2就有兩位 A 5 2 =5*4
那麼C 3 2 就是還要除以一個 數 比如 C 3 2 就是 A 3 2 再除以 A 22
C 5 3 就是 A 5 3 除以 A 3 3
相當清楚了嗎 樓主 手打字 求給分
A32 是排列 C32 是組合
比如A32 就是3乘以2 等於6
A 6 3 就是6*5*4
就是從大數開始乘後面那個數表示有多少個數 A 7 2 等於 7*6* 2就有兩位 A 5 2 =5*4
那麼C 3 2 就是還要除以一個 數 比如 C 3 2 就是 A 3 2 再除以 A 22
C 5 3 就是 A 5 3 除以 A 3 3
相當清楚了嗎 樓主 手打字 求給分