0

这是我的代码,如果找不到,它会创建一个 .accdb 文件:

Catalog cat = new CatalogClass();
string createStr = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|/saveDB.accdb;";
cat.Create(createStr);
Table tbl = new Table();
tbl.Name = "saveDB";
tbl.Columns.Append("ID", DataTypeEnum.adGUID);
tbl.Columns.Append("Tensiune", DataTypeEnum.adDouble);
tbl.Columns.Append("Frecventa", DataTypeEnum.adDouble);
tbl.Columns.Append("Rezistenta", DataTypeEnum.adDouble);
tbl.Columns.Append("Inductanta", DataTypeEnum.adDouble);
tbl.Columns.Append("Capacitate", DataTypeEnum.adDouble);
tbl.Columns.Append("Elemente", DataTypeEnum.adVarWChar, 25);
tbl.Columns.Append("Tip", DataTypeEnum.adVarWChar, 25);
cat.Tables.Append(tbl);
System.Runtime.InteropServices.Marshal.FinalReleaseComObject(tbl);
System.Runtime.InteropServices.Marshal.FinalReleaseComObject(cat.Tables);
System.Runtime.InteropServices.Marshal.FinalReleaseComObject(cat.ActiveConnection);
System.Runtime.InteropServices.Marshal.FinalReleaseComObject(cat);

但是当我在程序中运行它时,我得到了这个运行时错误:

System.Runtime.InteropServices.COMException (0x80004005): Not a valid file name.
   at ADOX.CatalogClass.Create(String ConnectString)

我不知道文件名有什么问题,所以如果有人有任何想法,请帮忙。

4

1 回答 1

0

好吧,我终于找到了一个基于 Killercam 在评论中发布的想法的解决方法,我会在这里发布,以防有​​人需要它。像这样构建连接字符串:

Catalog cat = new CatalogClass();
string cntPath = System.IO.Directory.GetCurrentDirectory();
string createStr = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + cntPath + "\\saveDB.accdb;";
cat.Create(createStr);
于 2012-04-20T16:29:51.407 回答