我正在努力尋找我想要找到的有效答案。基本上,我想檢查例如:
“tableNO1”存在,或者如果每個其他表都存在......
順便說一句,如果有幫助的話,我正在使用 Access 2002-2003 :) 你認為我應該升級到最新版本嗎?
背景:我正在嘗試創建運行時按鈕,每個按鈕都有一個資料庫表,當我關閉程式時,我為每個運行時創建的按鈕創建的表將被保存。再次啟動程式后,我應該單擊一個按鈕,該按鈕將添加這些具有資料庫表的按鈕(每個按鈕都有一個專用表)。例如,如果之前在程式中創建了 9 個運行時按鈕 - 每個按鈕都有一個 DB 表。我將有一個最多 9 個按鈕,當我第一次單擊創建運行時按鈕的按鈕時,每個按鈕都將命名為 tableNO(n) n=number of table,它將創建一個名為“tableNO1”的按鈕,第二次將創建“tableNO2”,依此類推...
提前致謝。
uj5u.com熱心網友回復:
好的,有幾種方法可以做到這一點,但我建議使用以下代碼:
public Boolean TableExist(string sTable)
{
using (OleDbConnection conn = new OleDbConnection(Properties.Settings.Default.AccessDB2))
{
conn.Open();
string[] sRestrict = new string[] {null,null,null,null};
sRestrict[2] = sTable;
DataTable MySchema = new DataTable();
MySchema = conn.GetSchema("Columns",sRestrict);
return (MySchema.Rows.Count > 0);
}
}
以上也是如何將架構(表定義)作為表獲取。
因此,說
if (TableExist("tblHotels")
{
// your code here
}
現在,因為您可能(可能)使用回圈,那么您可能會考慮出于性能原因將有效連接傳遞給 TableExist 函式,因此對于您的回圈而言,不要每次都重新創建連接 - 因為這會減慢速度下降了不少。
請注意,“許多”通常建議這樣做:
SELECT * FROM MSysObjects WHERE [Name] = 'tableNO1' AND Type = 1
上面的問題是默認情況下,MySysObjects 需要提升的權限。可以打開資料庫,然后使用安全設定訪問 MySysOjbects 的權限可以更改 - 但它比上面的代碼/功能更有效。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/451421.html
標籤:C# 毫秒访问 ms-access-2003
