У меня есть приложение, которое сохраняет и открывает данные (которые сохраняются как SQL CE файл базы данных). Каждый раз, когда проект сохраняется, создается новый файл .sdf со структурой таблицы, определенной моим кодом, и мне не нужно выполнять какую-либо проверку для него.
Меня беспокоит то, что когда пользователь импортирует (открывает) файл .sdf в OpenFileDialog
, у пользователя будет возможность выбрать файл базы данных, сгенерированный из другого приложения (то есть с другой схемой таблицы). Мне нужно будет проверить схему таблицы импортируемой базы данных, иначе приложение может аварийно завершить работу, если будет открыт и обработан неправильный файл базы данных.
Мне не нужно сравнивать схемы между файлами. Все, что мне нужно, это проверить, содержит ли файл базы данных определенную структуру таблицы или имена таблиц (что, я думаю, должно быть достаточно для моих целей). Какой самый простой способ сделать это?
[EDIT]
Я использовал следующий метод для проверки файла базы данных, который работает. Я использую строковый массив для проверки 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();
}
}
}