首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 更多程式設計知識

VB6 程式碼建立 Access 資料庫結構:DAO CreateDatabase、TableDef、Field 完整實戰

     編輯:更多程式設計知識

VB6 透過 DAO (Data Access Objects) 程式化建立 Access 資料庫 (.mdb)、資料表、欄位與屬性,適合安裝程式初始化、動態建表等場景。本文提供兩段完整程式碼:建立資料庫、建立資料表與欄位 (含型別、長度、允許空值)。

核心 DAO 物件層級


DBEngine.Workspaces(0) → CreateDatabase → Database → CreateTableDef → TableDef → CreateField → Field → Fields.Append → TableDefs.Append

常用資料型別常數 (DAO)

範例 1:建立資料庫


Private Sub cmdCreate_Click()
    On Error GoTo Err100
    ' 建立名為 VB-CODE 的資料庫 (檔名 VB-CODE.mdb)
    ' dbLangGeneral = 系統預設語言排序
    CreateDatabase "VB-CODE", dbLangGeneral
    MsgBox "資料庫建立完成!", vbInformation
    Exit Sub
Err100:
    MsgBox "不能建立資料庫!" & vbCrLf & vbCrLf & Err.Description, vbCritical
End Sub

範例 2:建立資料表與欄位


Private Sub Command1_Click()
    On Error GoTo Err100

    Dim dbs As Database, tdf As TableDef, fld As Field

    ' 開啟現有資料庫 (獨佔模式 False, 唯讀 False)
    Set dbs = Workspaces(0).OpenDatabase(App.Path & "\vbeden.mdb", False, False)

    ' 建立 TableDef
    Set tdf = dbs.CreateTableDef("VB編程樂園")

    ' 欄位 1: Name, Text(8)
    Set fld = tdf.CreateField("Name", dbText, 8)
    tdf.Fields.Append fld

    ' 欄位 2: Sex, Text(2), 允許空字串
    Set fld = tdf.CreateField("Sex", dbText, 2)
    fld.AllowZeroLength = True  ' 關鍵:允許 "" 空字串 (非 Null)
    tdf.Fields.Append fld

    ' 欄位 3: Age, Integer (2 bytes), 長度參數對 Integer 無效但保留
    Set fld = tdf.CreateField("Age", dbInteger, 3)
    tdf.Fields.Append fld

    ' 將 TableDef 加入資料庫
    dbs.TableDefs.Append tdf

    MsgBox "VB編程樂園資料表建立完成!", vbInformation
    Exit Sub

Err100:
    MsgBox "對不起,不能建立表。請先建立 VBEden 資料庫?", vbCritical
End Sub

關鍵屬性補充

  • Field.AllowZeroLength = True:Text/Memo 欄位允許零長度字串 (""),預設 False。注意區別 Null (未指派) 與 "" (指派空字串)。
  • Field.Required = True:不允許 Null (需配合 AllowZeroLength 完整控制)。
  • Field.DefaultValue:設定預設值,如 fld.DefaultValue = "Unknown"。
  • TableDef.Attributes = dbHiddenObject:建立隱藏系統資料表。

索引與關聯 (進階)


' 建立主鍵索引
Dim idx As Index
Set idx = tdf.CreateIndex("PrimaryKey")
idx.Primary = True
idx.Unique = True
Set fld = idx.CreateField("Name")
idx.Fields.Append fld
tdf.Indexes.Append idx

' 建立外鍵關聯 (需參考另一 TableDef)
' tdf.CreateRelation(...)

錯誤處理最佳實務

  • 所有 DAO 操作包裹在 On Error GoTo 區塊。
  • 檢查 Err.Number:3012 (資料庫已存在)、3010 (資料表已存在) 等。
  • 物件變數用完設為 Nothing 釋放 COM 參考計數。

遷移提示

VB.NET / C# 專案請改用 ADO.NET SqlConnection + CREATE TABLE SQL 或 Entity Framework Code First Migration。DAO 為 COM 元件,僅支援 32 位進程,64 位環境需啟用 WoW64 或改用 ACE OLEDB Provider。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved
常數值對應型別
dbBoolean1Boolean
dbByte2Byte
dbInteger3Short (2 bytes)
dbLong4Long (4 bytes)
dbSingle7Single
dbDouble8Double
dbDate8Date
dbText10Text (固定長度)
dbMemo12Memo (長文字)