[英]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.