繁体   English   中英

检查OleDb数据库是否存在

[英]Check if OleDb database exists

我试图环顾四周,但找不到任何人(甚至在SO中)谁解释了如何使用OleDb 12.0检查Access数据库是否存在。 我想出了如何创建数据库:

Catalog cat = new CatalogClass();
string cntPath = System.IO.Directory.GetCurrentDirectory();
string createStr = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + cntPath + "\\" + TB_LoginUsername.Text.ToLower() + "_LOG.accdb;";
cat.Create(createStr);
Table tbl = new Table();
tbl.Name = TB_LoginUsername.Text + "_SESSIONS";
tbl.Columns.Append("ID", DataTypeEnum.adGUID);
tbl.Columns.Append("Cycling", DataTypeEnum.adVarWChar, 25);
tbl.Columns.Append("Running", DataTypeEnum.adVarWChar, 25);
tbl.Columns.Append("Swimming", 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);

但是我不知道如何检查一个人是否存在-有人可以指导我该怎么做吗? 我怀疑这与File.Exists()但我不知道如何使用它。

谢谢!

这是检查表是否存在的工作代码:

try
{
        OleDbConnection myConnection = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" + frmMain.strFilePath + "\\ConfigStructure.mdb");
        myConnection.Open();
        OleDbCommand myCommand = new OleDbCommand();
        myCommand.Connection = myConnection;
        myCommand.CommandText = "CREATE TABLE <yourtable name>(<columns>)";
        myCommand.ExecuteNonQuery();
        myCommand.Connection.Close();
}
catch(OleDbException e)
{  
    if(e.ErrorCode == 3010 || e.ErrorCode == 3012)
    // if error then table exist do processing as required
}

更新

如果要检查数据库是否存在:可以使用DTO,获取数据库名称列表,检查所需名称,然后做出适当反应,或者可以打开ADO连接。 如果打开连接时出现错误,提示“未找到未指定数据源的默认驱动程序”(来自ODBC)或“ [LNA] [普及] [ODBC引擎接口] [数据记录管理器]找不到指定的命名数据库( Btrieve Error 2301)”(来自OLEDB),则数据库不存在。

您可以使用DTO创建它(如果不存在)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM