我有这段代码可以从 SQLite 表中获取计数:
internal static bool TableExistsAndIsNotEmpty(string tableName)
{
int count;
string qry = String.Format("SELECT COUNT(*) FROM {0}", tableName);
using (SQLiteConnection con = new SQLiteConnection(HHSUtils.GetDBConnection()))
{
con.Open();
SQLiteCommand cmd = new SQLiteCommand(qry, con);
count = (int)cmd.ExecuteScalar();
}
return count > 0;
}
当它运行时,我得到“ Invalid Cast Exception ”
可能很明显,从查询返回的值是一个 int,也就是说记录数(我在运行查询时得到“2”,即 Sqlite Browser 中的“SELECT COUNT(*) FROM WorkTables”) .
那么这里无效转换的是什么?
作为一种旁注,我知道最好使用查询参数,并且我在这里找到了如何在 Windows 应用商店应用程序中执行此操作 [如何在 WinRT 应用程序中使用 SQLite 查询参数?,但不知道如何在老式(Windows 窗体/Windows CE)应用程序中执行此操作。
我认为它会是这样的:
string qry = "SELECT COUNT(*) FROM ?";
using (SQLiteConnection con = new SQLiteConnection(HHSUtils.GetDBConnection()))
{
con.Open();
SQLiteCommand cmd = new SQLiteCommand(con);
count = cmd.ExecuteScalar(qry, tableName);
}
...但是我尝试编译的同类内容都没有。