簡體   English   中英

如何以編程方式在C#中創建Microsoft Access數據庫?

[英]How to create Microsoft Access database in C# programmatically?

如果它不存在,如何在C#中創建Microsoft Access數據庫文件?

最簡單的答案是在程序中嵌入一個空的.mdb / .accdb文件並將其寫入磁盤。

正確的答案是將COM Interop與ADOX庫一起使用:

var cat = new ADOX.Catalog()
cat.Create(connectionString);

請記住使用OleDbConnectionStringBuilder生成連接字符串。

嘗試:

using ADOX; //Requires Microsoft ADO Ext. 2.8 for DDL and Security
using ADODB;

public bool CreateNewAccessDatabase(string fileName)
{
bool result = false; 

ADOX.Catalog cat = new ADOX.Catalog();
ADOX.Table table = new ADOX.Table();

//Create the table and it's fields. 
table.Name = "Table1";
table.Columns.Append("Field1");
table.Columns.Append("Field2");

try
{
    cat.Create("Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=" + fileName + "; Jet OLEDB:Engine Type=5");
    cat.Tables.Append(table);

    //Now Close the database
    ADODB.Connection con = cat.ActiveConnection as ADODB.Connection;
    if (con != null)
    con.Close();

    result = true; 
}
catch (Exception ex)
{
    result = false;
}
cat = null;
return result;
} 

http://zamirsblog.blogspot.com/2010/11/creating-access-database.html

在我的電腦上,Windows 7 sp1 Professional 64位,我找到了Microsoft ADO Ext。 2.8用於C:\\ Program Files \\ Common Files \\ System \\ ado \\ msadox28.dll中的 DDL和安全

它也被作為參考:

在此輸入圖像描述

在參考文獻中包含ADOX

在此輸入圖像描述

默認情況下,列創建為文本[255] 以下是一些將列創建為不同數據類型的示例。

table.Columns.Append("PartNumber", ADOX.DataTypeEnum.adVarWChar, 6); // text[6]
table.Columns.Append("AnInteger", ADOX.DataTypeEnum.adInteger); // Integer 

我找到了這個數據類型列表來創建和讀取訪問數據庫字段

Access Text = adVarWChar

訪問備忘錄= adLongVarWChar

Access Numeric Byte = adUnsignedTinyInt

Access Numeric Integer = adSmallInt

Access Numeric Long Integer = adInteger

Access Numeric Single Precision = adSingle

Access Numeric Double Precision = adDouble

Access Numeric Replicatie-id = adGuid

Access Numeric Decimal = adNumeric

訪問日期/時間= adDate

訪問貨幣= adCurrency

訪問AutoNumber = adInteger

訪問是/否= adBoolean

訪問HyperLink = adLongVarWChar

您可以在DAO / ACE庫中使用CreateDatabase方法(它隨Office一起安裝,或者可從此處下載)。

// using Microsoft.Office.Interop.Access.Dao;
// using static Microsoft.Office.Interop.Access.Dao.DatabaseTypeEnum;

const string dbLangGeneral = ";LANGID=0x0409;CP=1252;COUNTRY=0";

var engine = new DBEngine();
var dbs = engine.CreateDatabase(@"c:\path\to\database.accdb", dbLangGeneral, dbVersion120);
dbs.Close();
dbs = null;

請注意,根據您希望數據庫支持的Access / Jet版本,您可以使用DatabaseTypeEnum枚舉中的其他值:

  • dbVersion10
  • dbVersion11
  • dbVersion20
  • dbVersion30
  • dbVersion40
  • dbVersion120
  • dbVersion140
  • dbVersion150

另請注意,您可以選擇加密數據庫,也可以選擇其他排序規則。

注意:如果您有64位計算機,並且希望將代碼作為64位程序的一部分運行,則需要64位版本的引擎。 如果您已經安裝了32位版本(通過Office或通過下載),則必須使用/passive/silent標志運行64位安裝程序; 否則,您將收到一條消息,指出您無法在以前安裝的32位組件上安裝64位組件。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM