如何在运行时在C_中创建Access数据库?
最佳答案
首先需要做的是获取对Microsoft ADO Ext.x.x的COM引用,以获取DDL和安全性。x.x代表你机器上的任何版本。我的版本以前是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);
下一步是为数据库创建表和列。这是一个非常直接的操作,如下例所示。
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);
最后一步非常重要,否则关闭应用程序时会出错。一旦添加了所有的表和列,就需要以正确的顺序正确地释放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);
就是这样。现在应该有一个可以写入的access数据库。希望这有帮助。
参考:John Russell Plant - Create an Access Database in C#
关于c# - 如何使用C#在运行时创建Access数据库?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1388971/