JET 資料庫/建立和連線
有很多方法可以建立 JET 資料庫,下面列舉了一些方法。資料庫的建立方式無關緊要,重要的是資料庫的引擎型別決定了 JET SQL 的可用功能。
| JET 版本 | 引擎型別程式碼 |
|---|---|
| JET 1.0 | 1 |
| JET 1.1 | 2 |
| JET 2.0 | 3 |
| JET 3.x | 4 |
| JET 4.x | 5 |
到目前為止,建立新 JET 資料庫最簡單的方法是使用 Microsoft Access.
- 啟動 Microsoft Access
- 從選單中選擇
檔案 → 新建或按Ctrl-N - 選擇“空白資料庫”
- 導航到要儲存資料庫的檔案系統位置,併為其命名
然後,您可以使用各種資料庫和安全實用程式來設定引擎型別、加密、可選系統資料庫以及使用者/密碼等內容。
可以透過在 Windows 中建立新的 ODBC DSN(資料來源名稱)並在 ODBC 連線視窗中建立資料庫來建立空 JET 資料庫。

從 Windows 控制面板啟動 ODBC 資料來源小程式,然後單擊“新增”以建立新的 DSN。您應該會看到一個類似於右側的螢幕。選擇 Microsoft Access 驅動程式,然後單擊“完成”。

您應該會看到一個用於配置新的 Microsoft Access DSN 的螢幕,如右側所示。單擊“建立”按鈕,開啟“新建資料庫”視窗。

您現在應該會看到“新建資料庫”視窗。導航到要放置 JET 資料庫的位置,輸入名稱,選擇任何特殊選項(如引擎型別(格式)、加密以及是否建立單獨的系統資料庫),然後單擊“確定”以建立資料庫。如果需要,您可以取消 ODBC 資料來源小程式,而不必建立新的 DSN,因為您可能希望透過 OLE-DB 連線到它!
用於建立與 JET 4.0 相容的資料庫的 Visual Basic 程式碼
Dim cat As New ADOX.Catalog
Dim create_string As String
Dim conn As ADODB.Connection
create_string = "Provider=Microsoft.Jet.OLEDB.4.0;Jet OLEDB:Engine Type=5;"
create_string = create_string & "Data Source=" & path_to_database & ";"
If JET_encryption_wanted Then
create_string = create_string & "Jet OLEDB:Encrypt Database=True;"
End If
Set conn = cat.Create(create_string)
conn.Close()
JET 資料庫不會重用刪除舊資料釋放的空間。這會導致資料庫隨著時間的推移而增大,並可能導致效能問題,甚至如果資料庫增長過大,會導致資料庫出現故障。為了克服這個問題,需要定期壓縮資料庫以刪除未使用的空間並減小檔案大小。
壓縮 JET 資料庫最簡單的方法是在 Microsoft Access 中開啟它並執行名為“壓縮並修復資料庫”的操作,該操作位於“工具”選單中。但是,如果資料庫位於遠端位置且無法透過 Windows 檔案系統訪問,則可能無法執行此操作。
JET 執行時系統與稱為 JET 複製物件 (JRO) 的元件庫一起分發。以下 Visual Basic 程式碼使用 JRO 壓縮 JET 資料庫
' declare Windows API functions
Declare Function MoveFileEx Lib "kernel32" Alias "MoveFileExA" _
(ByVal lpExistingFileName As String, ByVal lpNewFileName As String, _
ByVal dwFlags As Long) As Long
' build connection strings for database and temporary file
Dim cx as string
Dim src_cx As String
Dim tgt_cx As String
cx = "Provider=Microsoft.Jet.OLEDB.4.0;Jet OLEDB:Engine Type=5;"
If uses_database_password Then
cx = cx & "Jet OLEDB:Database Password=" & database_password
ElseIf uses_username_password Then
cx = cx & "User ID=" & user_id & ";Password=" & user_password & ";"
End If
src_cx = cx & "Data Source=" & src_file & ";"
tgt_cx = cx & "Data Source=" & tmp_file & ";"
' run Jet Replication Objects to compact the database to a temporary file
Dim compacter As New JRO.JetEngine
compacter.CompactDatabase src_cx, tgt_cx
Set compacter = Nothing
' replace the old database with the compacted database, under the same name
Dim scode As Long
scode = MoveFileEx(tmp_file, src_file, MOVEFILE_REPLACE_EXISTING + MOVEFILE_COPY_ALLOWED)
從 ADO 連線到資料庫時,可以使用 JET OLE-DB 提供程式或 ODBC DSN(資料來源名稱)進行連線。本節介紹使用 OLE-DB 提供程式,因為它是最高效的機制,並且比 ODBC DSN 路徑提供更多功能。
透過 JET OLE-DB 提供程式進行連線需要在 OLE-DB 連線字串中傳遞有關資料庫的資訊。如果資料庫具有系統資料庫或使用資料庫級密碼,則必須在連線字串中提供此資訊。
以下 Visual Basic 程式碼演示瞭如何使用使用者名稱和密碼從 ADO 連線到 JET 資料庫
Dim cx As String
Dim db As ADODB.Connection
cx = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & database_filename & ";"
Set db = CreateObject("ADODB.Connection")
db.Open cx, user_id, user_password
以下 Visual Basic 程式碼演示瞭如何使用資料庫級密碼從 ADO 連線到 JET 資料庫
Dim cx As String
Dim db As ADODB.Connection
cx = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & database_filename & ";"
cx = cx & "Jet OLEDB:Database Password=" & database_password
Set db = CreateObject("ADODB.Connection")
db.Open cx
以下 Visual Basic 程式碼演示瞭如何使用使用者名稱和密碼從 ADO 連線到具有系統資料庫的 JET 資料庫
Dim cx As String
Dim db As ADODB.Connection
cx = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & database_filename & ";"
cx = cx & "Jet OLEDB:System Database=" & system_db_filename & ";"
Set db = CreateObject("ADODB.Connection")
db.Open cx, user_id, user_password
JET 引擎版本(最高至 JET 3.0)對使用 SQL 語句建立資料庫物件的支援有限,而 DAO 提供了完全支援。但是,自從 JET 4.0 以來,JET SQL 語言支援大多數(如果不是全部)資料庫物件屬性。但是,某些設計工具尚未更新以反映這一點,並且仍然使用 DAO(通常透過 ODBC)來更改資料庫。