好久米寫東西了,開學前再寫一篇。最近老是在搗鼓資料庫,一個寒假也沒搞什麼,就寫成了一個紀念日提醒器和一個個人收支管理程式。
新接觸C#的ADO.NET,遇到不少困難。開學前整理下,希望對大家有協助。
首先一個是資料庫的連結,我用的是ACCESS 2007(VISTA下SQL SERVER比較難搭建),手頭還沒有什麼書介紹ACCESS 2007的連接字串,網上找了很久(最後才知道到資料來源裡能找到的 =_=||),這裡提供給大家(一般的串連輸入這些就夠了,如果要個密碼或者進階點的串連就到完整字串中截取吧):
Provider=Microsoft.ACE.OLEDB.12.0;Data Source=××.accdb;
[完整的ACCESS 2007連接字串展開下面查看]
Code
Provider=Microsoft.ACE.OLEDB.12.0;User ID=Admin;Data Source=C:Documents and Settings chengeMy Documents資料庫1.accdb;Mode=Share Deny Read|Share Deny Write; Extended Properties="";Jet OLEDB:System database=C:Documents and SettingschengeApplication DataMicrosoftAccessSystem.mdw;Jet OLEDB:Registry Path=SoftwareMicrosoftOffice12.0AccessAccess Connectivity Engine;Jet OLEDB:Database Password="";Jet OLEDB:Engine Type=6;Jet OLEDB:Database Locking Mode=0;Jet OLEDB:Global Partial Bulk Ops=2;Jet OLEDB:Global Bulk Transactions=1;Jet OLEDB:New Database Password="";Jet OLEDB:Create System Database=False;Jet OLEDB:Encrypt Database=False;Jet OLEDB:Don't Copy Locale on Compact=False;Jet OLEDB:Compact Without Replica Repair=False;Jet OLEDB:SFP=False;Jet OLEDB:Support Complex Data=True
需要注意的是如果別人的機器沒有裝ACCESS 2007,那麼程式會拋出一個異常,說是沒有能夠找到ACE.OLEDB.12.0的資料庫驅動。我在XP下調試的結果就是:XP在預設情況(即使裝了ACCESS 2003)也沒有辦法是用2007版的資料庫。所以如果你的程式想在XP上啟動並執行話,最好還是做個MDB的資料庫,用以前Microsoft Jet 4.0 OLEDB的資料庫引擎來訪問吧。
其次要注意的是C#在寫SQL語句的時候多個匹配究竟用'*'還是用'%'。我們知道在ACCESS的正則中多個匹配應該是'*',但為什麼我用OledbCommand沒有辦法執行呢?原因是在C#中編寫的應該是SQL SERVER的文法,也就是說應該用'%',你的C#程式在編譯時間會自動將SQL語句轉換為適合ACCESS的SQL語句。也就說,很多SQL SERVER支援的但ACCESS不支援的語句在編寫時是不會報錯的,但是一旦運行,就會出現問題。
還有就是建立表和索引的問題。以前學習的時候都是用MSSQL的,而且多用語句來執行。這次用ACCESS 2007的GUI模式還真是不習慣,這裡給大家個建議,還是用命令建立比較好。順便給大家推薦個資料庫SQL-Lite。單從資料庫能力來講要比ACCESS強大(開源的,強大的),但也因為開源,資料庫沒有提供密碼功能(但還是因為開源,網上能找到加密模組)。
最後要提醒大家的是:C#中的Calendar控制項在不同的機器中顯示起來是不一樣的,-_-||,他會根據你.NET的版本的不同而不同(可別以為都是.NET 2.0就都一樣了,你在安裝安裝.NET時選擇的語言不通顯示的結果都是不同的),有空的兄弟可以在虛擬機器下試試,我就是因為VISTA和XP下介面不一樣最後不得不重改介面……。
寒假這個禮拜就要結束了,把寒假學的東西小小的總結了下,文章的結尾把寒假的兩個作品發上來晾晾,需要的朋友可以留下E-MAIL,這裡就不提供源碼了(放在這裡怕丟人啊)。
代碼:
SkyDrive:http://cid-856b7a1fbf560755.skydrive.live.com/browse.aspx/My%20free%20softwares/FinancialStatistics
一個是資料庫,一個是原始碼。兩個檔案都是rar壓縮檔。