在打开之前验证数据库文件架构
本文关键字:数据库 文件 验证 | 更新日期: 2023-09-27 18:06:31
我有一个保存和打开数据的应用程序(保存为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();
}
}
}
打开数据库(确保有错误处理,因为用户可以指向任何文件)。
run: SELECT TABLE_NAME FROM INFORMATION_SCHEMA。TABLES WHERE TABLE_NAME = N' mytable '