Как получить результат целостности PRAGMA с использованием компонента System.Data.SQLite? - PullRequest
0 голосов
/ 30 марта 2012

Я преобразую проект, который делал вызовы непосредственно в неуправляемую библиотеку sqlite3.dll, в проект, использующий управляемую оболочку SQLite.NET.Одно преобразование, которое поставило меня в тупик, - как получить результат команды PRAGMA целостности_чека?В соответствии с файлом справки SQLite.NET для этой команды

Если обнаружены какие-либо проблемы, то возвращается одна строка, которая является описанием всех проблем.Если все в порядке, возвращается «ok».

Вопрос в том, как мне получить доступ к этому единственному результату строки?код, который я использую для выполнения команды.

SQLiteConnection^ db = gcnew SQLiteConnection("DataSource=MyTest.db");
try
{
  db->Open();
  SQLiteCommand^ cmdIntegrity = gcnew SQLiteCommand("PRAGMA integrity_check;", db);
  cmdIntegrity->ExecuteNonQuery();
  db->Open();
} finally
{
  delete (IDisposable^) db;
}

Спасибо за любую помощь, Фил Ковени

1 Ответ

0 голосов
/ 10 декабря 2012

Если я правильно понимаю, вы используете тонкую библиотеку sqlite-net . Я пролистал код для SQLiteCommand в SQLite.cs и нашел (как в ADO.net) функцию с именем ExecuteScalar, которую можно использовать в вашем случае.

Итак, вместо использования

cmdIntegrity->ExecuteNonQuery();

вы должны написать что-то похожее на (у меня нет опыта работы с C ++ / CLI, но смысл должен быть ясен)

String ^result = cmdIntegrity->ExecuteScalar<String^>();
if(result->Equals("ok"))
{
  db->Open();
}
else
{
  //manage the error
}

Я использую подобную технику с System.Data.SQLite библиотекой, в вашем случае она не должна быть слишком отличной.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...