2011-05-01 515 views
2

我使用C#和access db。
没有为下降表像下面MySQL中的语句:如何在Access中删除表(如果存在)

drop table if exists t_table 

那么,你知道访问类似的声明?

+0

张贴答案[这个问题]的SQL(http://stackoverflow.com/questions/2985513/check-if-access-table-exists)应该做你需要什么 – 2011-05-01 13:04:10

回答

2


我不知道在Access中这样的SQL声明。
您可以howewer,请执行下列操作之一:

  • 尝试drope表而不检查是否存在,捕获异常(它应该有特定的代码,如果没有表被发现),并忽略它。

  • 尝试在访问表中隐藏MSysObjects检查表是否存在(与ADO但是,它没有默认权限)

  • 使用类似下面的代码(坏事:下探表不返回记录受影响):

    using (OleDbConnection conn = new OleDbConnection(@"Provider=Microsoft.JET.OLEDB.4.0;data source=c:\myDatabase.mdb")) 
    { 
        conn.Open(); 
    
        string tableToDelete = "myTable"; //table name 
        bool tableExists = false; 
    
        DataTable dt = conn.GetSchema("tables"); 
    
        foreach (DataRow row in dt.Rows) 
        { 
         if (row["TABLE_NAME"].ToString() == tableToDelete) 
         { 
          tableExists = true; 
          break; 
         } 
        } 
    
        if (tableExists) 
        { 
         using (OleDbCommand cmd = new OleDbCommand(string.Format("DROP TABLE {0}", tableToDelete), conn)) 
         { 
          cmd.ExecuteNonQuery(); 
          MessageBox.Show("Table deleted"); 
         } 
        } 
        else 
         MessageBox.Show(string.Format("Table {0} not exists", tableToDelete)); 
    } 
    
相关问题