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 に答える