从C#开始,我正在打开MS Access DB&将值导入Access Table。我们需要验证表是否已存在于MS Access DB ??
中 access.OpenCurrentDatabase(sMedExpressAccessDB, true, null);
// Drop the existing table data
access.DoCmd.DeleteObject(Access.AcObjectType.acTable, "drug");
// Run the saved import
access.DoCmd.RunSavedImportExport("MedExpressODBC");
// Close the database
access.CloseCurrentDatabase();
答案 0 :(得分:3)
一种方法是使用msysobjects
表。例如。
SELECT COUNT(*) FROM msysobjects where name = 'foo' and type = 1
您还可以使用DAO tableDef对象。如果我没记错的话,如果你愿意,可以通过运行时可调用包装器访问DAO。
答案 1 :(得分:1)
Chok,尝试在delete命令周围使用try ... catch构造,以便在删除不存在的对象时忽略该错误。
如果您真的需要查看表格是否存在,那么当您使用.Net时,我建议使用适用于OleDbConnections的GetOleDbSchemaTable方法,例如,这里: TekTips post by Headwinds 使用此vb代码:
Dim schemaDT As DataTable
Dim thisNull As System.DBNull()
schemaDT = thisConn.GetOleDbSchemaTable( _
OleDbSchemaGuid.Tables, thisNull)
如引用的帖子所述:
从此语句返回的DataTable是有关表的信息的集合 优点是这种方法对其他ADO.Net数据库也有效(稍作修改)。 有关详细信息,请参阅MSDN文档。
替代品: 正如人们所说,您可以在Access中使用msysobjects系统表,但不保证该表在各种Access版本中具有相同的信息。
此外,您可以使用DAO Tabledefs集合或其ADO等效项。
答案 2 :(得分:0)
这可以帮助使用c#进行ms访问。测试
protected void Button1_Click(object sender, EventArgs e)
{
string DB = Server.MapPath("App_Data/OnlineTestEngine.mdb");
con = new OleDbConnection("Provider=Microsoft.Jet.OleDb.4.0;Data Source=" + DB);
string query = "Select * from current_test";
con.Open();
cmd1 = new OleDbCommand(query, con);
try
{
dr = cmd1.ExecuteReader();
if (dr.GetName(0).ToString() == "Qno")
{
Label1.Text = "Table Already Exist";
dr.Close();
con.Close();
con.Open();
string q = "Drop table current_test";
OleDbCommand cmd2 = new OleDbCommand(q, con);
cmd2.ExecuteNonQuery();
Label1.Text += " | Table Deleted from Database";
}
}
catch(Exception ex)
{
Label1.Text = "Table Not Exist";
string query2 = "create table current_test(Qno counter, Questions varchar(255), ans1 varchar(255), ans2 varchar(255), ans3 varchar(255), ans4 varchar(255), right_ans varchar(255), marks int, response int, PRIMARY KEY (Qno))";
cmd3 = new OleDbCommand(query2, con);
con.Close();
con.Open();
dr = cmd3.ExecuteReader();
Label1.Text += " | Table Created Sucessfully";
}
finally
{
con.Close();
}
}