如何在C#中在运行时创建Access数据库?

Ami*_*all 2 c# database ms-access

如何在C#中在运行时创建Access数据库?

Sau*_*ron 13

您需要做的第一件事是获得Microsoft ADO Ext的COM引用.XX用于DDL和安全.XX表示您在计算机上碰巧遇到的任何版本.我曾经是2.7版本,但在Visual Studio 2008中,它已更新为6.0.

alt text http://blog.jrpsoftware.com/content/binary/WindowsLiveWriter/CreateanAccessDatabaseinC_10DDD/AddReference_2.png

添加引用后,ADOX将添加到代码的using部分.

alt text http://blog.jrpsoftware.com/content/binary/WindowsLiveWriter/CreateanAccessDatabaseinC_10DDD/Using_2.png

接下来,您将要为数据库创建目录.将您希望的文件名插入以下字符串并将其传递给CatalogClass.

CatalogClass cat = new CatalogClass();  
string tmpStr;  
string filename = "Sample.MDB";   
tmpStr = "Provider=Microsoft.Jet.OLEDB.4.0;";   
tmpStr += "Data Source=" + filename + ";Jet OLEDB:Engine Type=5";  
cat.Create(tmpStr);
Run Code Online (Sandbox Code Playgroud)

下一步是为数据库创建表和列.这是一个非常简单的操作,如下例所示.

 Table nTable = new Table(); 
 nTable.Name = "PersonData"; 
 nTable.Columns.Append("LastName", DataTypeEnum.adVarWChar, 25);
 nTable.Columns.Append("FirstName", DataTypeEnum.adVarWChar, 25);
 nTable.Columns.Append("Address 1", DataTypeEnum.adVarWChar, 45);
 nTable.Columns.Append("Address 2", DataTypeEnum.adVarWChar, 45); 
 nTable.Columns.Append("City", DataTypeEnum.adVarWChar, 25);
 nTable.Columns.Append("State", DataTypeEnum.adVarWChar, 2);
 nTable.Columns.Append("Zip", DataTypeEnum.adVarWChar, 9);
 cat.Tables.Append(nTable);
Run Code Online (Sandbox Code Playgroud)

最后一步非常重要,否则当您关闭应用程序时会出错.添加完所有表和列后,您需要以正确的顺序正确释放com对象.

System.Runtime.InteropServices.Marshal.FinalReleaseComObject(nTable); 
System.Runtime.InteropServices.Marshal.FinalReleaseComObject(cat.Tables);    
System.Runtime.InteropServices.Marshal.FinalReleaseComObject(cat.ActiveConnection); 
System.Runtime.InteropServices.Marshal.FinalReleaseComObject(cat);
Run Code Online (Sandbox Code Playgroud)

这就对了.您现在应该有一个可以写入的Access数据库.希望这可以帮助.

参考:John Russell Plant - 使用C#创建Access数据库


MRG*_*MRG 6

创建一个空白访问数据库并将其存储在资源文件中.

现在,只要您想使用它,从资源中获取该数据库并将其复制到您想要的任何位置,将其重命名为您想要的任何内容,并执行数据库设置脚本以创建默认表并在其中加载值.