我有一個應用程序可以保存並打開數據(保存爲SQL CE數據庫文件)。每次保存項目時,都會生成一個新的.sdf文件,其中包含由我的代碼定義的表結構,我不需要對其執行任何驗證。在打開之前驗證數據庫文件模式
我的問題是,當用戶導入(打開)OpenFileDialog
中的.sdf文件時,用戶可能會選擇由不同應用程序(即具有不同表格模式)生成的數據庫文件。我需要驗證導入數據庫表模式,或者如果打開並處理錯誤的數據庫文件,應用程序可能會崩潰。
我不需要比較文件之間的模式。我需要的只是檢查數據庫文件是否包含某個表結構或表名(我認爲這應該足以滿足我的目的)。什麼是最簡單的方法來做到這一點?
[編輯]
我用下面的方法來驗證數據庫文件,它的工作原理。我使用一個字符串數組來檢查一個SqlCeDataReader(它存儲了表名)。它的工作原理,但我不知道是否有一個更簡單的方法 - 在.NET中使用方法的構建?
using (SqlCeConnection conn = new SqlCeConnection(validateConnStr))
{
using (SqlCeCommand cmd = new SqlCeCommand(@"SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES", conn))
{
try
{
conn.Open();
SqlCeDataReader rdr = cmd.ExecuteReader();
string[] tableArr = { "FirstTable", "SecondTable" };
int ta = 0;
while (rdr.Read())
{
if (rdr.GetString(0) != tableArr[ta])
{
isValidDbFile = false;
}
else
{
isValidDbFile = true;
}
ta++;
}
}
catch (Exception ex)
{
//MessageBox.Show(ex.ToString());
}
finally
{
conn.Close();
}
}
}
如果你使用的是4.0,你也可以使用GetSchema(「TABLES」),它返回一個帶有表名的DataTable。 – ErikEJ