如何使用System.Data.SQLite组件获取integrity_check PRAGMA的结果?

时间:2012-03-30 16:55:31

标签: sqlite c++-cli

我正在使用托管包装器SQLite.NET将一个直接调用非托管sqlite3.dll库的项目转换为一个项目。令我难过的一个转换是,如何获得PRAGMA integrity_check命令的结果?根据此命令的SQLite.NET帮助文件

  

如果发现任何问题,则返回一个字符串   是对所有问题的描述。如果一切顺利,“确定”就是   返回。

问题是,如何访问单个字符串结果?

以下是我用来执行命令的C ++ / CLI代码。

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;
}

感谢您的帮助, Phil Coveney

1 个答案:

答案 0 :(得分:0)

如果我理解正确,您正在使用sqlite-net精简库。我浏览了SQLite.csSQLiteCommand的代码,我发现(就像在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库中使用了类似的技术,在你的情况下,它不应该有太大的不同。