以下為在用ADO.NET,OLE等技術在訪問ACCESS,SQL_SERVER,EXCEL過程中常遇到的問題及提示:
(1)得到表中欄位的一系列屬性,例如"是否允許為空白":
sql_Text2 = "SELECT COLUMNPROPERTY(OBJECT_ID('" & 表名 & "'),'" & 欄位名 & "','AllowsNull')"
(2)用ADO.NET訪問資料庫時,常會需要判斷欄位的屬性,這些欄位屬性在 System.Data.SqlTypes 命名空間中,如:
整型 : System.Data.SqlTypes.SqlInt32 雙精確度 : System.Data.SqlTypes.SqlDouble
字串 : System.Data.SqlTypes.SqlString 日期 : System.Data.SqlTypes.SqlDateTime ......
(3)得到一個資料庫中的多個表的屬性,比如得到一個MDB中多個TABLE的屬性(VB.NET):
Dim dt As Data.DataTable
dt = objConn.GetOleDbSchemaTable(System.Data.OleDb.OleDbSchemaGuid.Tables, New Object() {Nothing, Nothing, Nothing, "TABLE"})
該MDB中的多個表的屬性就存在於dt中了
dt.Rows.Count ----- 得到的就是表的個數
dt.Rows.Item(第i行)("TABLE_NAME").ToString().Trim() ---- 得到的就是"第i+1"個表的名稱
(4)把EXCEL當作資料庫進行寫入的時候,常會遇到無法寫入的狀況,除了使用EXCEL控制項(如EXCEL.APPLICATION , EXCEL.WORKBOOK , EXCEL.WORKSHEET)進行操作外,還可使用以下方法(VB.NET):
Dim path As String
path = .xls檔案存放的路徑
str_con = "Driver={Microsoft excel Driver (*.xls)};ReadOnly=False;DBQ=" & path
If con.State = 1 Then
con.Close()
End If
con.Open(str_con)
......具體操作
con.Close
(5)最後,在做ASP.NET時候,IIS支援EXCEL進行下載,但不支援ACCESS檔案下載(不然會造成網站的安全性問題) ; 針對此情況,在我們小型系統開發中,可以將ACCESS檔案壓縮成RAR檔案從而提供下載,以下為 ACCESS -> RAR 的壓縮過程(ASP.NET(VB)實現):
'將 MDB 壓縮為 RAR 檔案
Dim RAR_EXE As String
Dim Source As String
Dim Target As String
Dim FileString As String
RAR_EXE = Server.MapPath("Data\WinRAR.exe")
Source = Server.MapPath(.mdb檔案的相對目錄)
Target = Server.MapPath(壓縮將產生的.rar檔案儲存相對目錄)
'如果原 RAR 檔案存在,則先刪除
If System.IO.File.Exists(Target) Then
System.IO.File.Delete(Target)
End If
'開始執行壓縮檔
FileString = RAR_EXE + " A " + Target + " " + Source
Shell(FileString, AppWinStyle.Hide)
解壓縮也類似,把 FileString 中的參數 A 改成 X 就可以了~
注意:無論"壓縮"還是"解壓縮",在操作之前必須把 WINRAR.EXE 存放於將要網站(可以理解為 WINRAR.EXE 為壓縮的驅動程式)