跳轉到內容

JET 資料庫/建立和連線

來自華夏公益教科書
JET 資料庫

簡介 · 建立和連線 · 資料型別 · 物件名稱和常量 · 資料完整性 · 安全性 · 資料定義語言 · 選擇 · 插入 · 更新 · 刪除 · 函式 · 檢視和儲存過程 · 操作工具 · 整合和遷移 · 設計工具

建立 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

從 Access 建立

[編輯 | 編輯原始碼]

到目前為止,建立新 JET 資料庫最簡單的方法是使用 Microsoft Access.

  1. 啟動 Microsoft Access
  2. 從選單中選擇 檔案 → 新建 或按 Ctrl-N
  3. 選擇“空白資料庫”
  4. 導航到要儲存資料庫的檔案系統位置,併為其命名

然後,您可以使用各種資料庫和安全實用程式來設定引擎型別、加密、可選系統資料庫以及使用者/密碼等內容。

從 ODBC 建立

[編輯 | 編輯原始碼]

可以透過在 Windows 中建立新的 ODBC DSN(資料來源名稱)並在 ODBC 連線視窗中建立資料庫來建立空 JET 資料庫。

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

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

您現在應該會看到“新建資料庫”視窗。導航到要放置 JET 資料庫的位置,輸入名稱,選擇任何特殊選項(如引擎型別(格式)、加密以及是否建立單獨的系統資料庫),然後單擊“確定”以建立資料庫。如果需要,您可以取消 ODBC 資料來源小程式,而不必建立新的 DSN,因為您可能希望透過 OLE-DB 連線到它!

從 ADOX 建立

[編輯 | 編輯原始碼]

用於建立與 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 資料庫不會重用刪除舊資料釋放的空間。這會導致資料庫隨著時間的推移而增大,並可能導致效能問題,甚至如果資料庫增長過大,會導致資料庫出現故障。為了克服這個問題,需要定期壓縮資料庫以刪除未使用的空間並減小檔案大小。

從 Access 壓縮

[編輯 | 編輯原始碼]

壓縮 JET 資料庫最簡單的方法是在 Microsoft Access 中開啟它並執行名為“壓縮並修復資料庫”的操作,該操作位於“工具”選單中。但是,如果資料庫位於遠端位置且無法透過 Windows 檔案系統訪問,則可能無法執行此操作。

使用 JRO 壓縮

[編輯 | 編輯原始碼]

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)

連線到 JET 資料庫

[編輯 | 編輯原始碼]

從 ADO 連線

[編輯 | 編輯原始碼]

從 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

DAO 與 SQL

[編輯 | 編輯原始碼]

JET 引擎版本(最高至 JET 3.0)對使用 SQL 語句建立資料庫物件的支援有限,而 DAO 提供了完全支援。但是,自從 JET 4.0 以來,JET SQL 語言支援大多數(如果不是全部)資料庫物件屬性。但是,某些設計工具尚未更新以反映這一點,並且仍然使用 DAO(通常透過 ODBC)來更改資料庫。

華夏公益教科書