我正在使用托管包装器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
答案 0 :(得分:0)
如果我理解正确,您正在使用sqlite-net精简库。我浏览了SQLite.cs中SQLiteCommand
的代码,我发现(就像在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库中使用了类似的技术,在你的情况下,它不应该有太大的不同。