我非常擅长将SQlite集成到Universal Apps。我已经启动并运行了数据库。但现在我试图找到一个列的最大值。它没有返回预期值。 Db填充了数据
var db = App.conn;
using (var statement = db.Prepare("SELECT MAX(Priority) as Priority FROM FOLDER; "))
{
statement.Step();
var result = (int)statement["Priority"];
}
异常表示错误的转换,但优先级为Integer类型。
修改
类型' System.InvalidCastException'的例外情况发生在JusWrite Trial.WindowsPhone.exe但未在用户代码中处理 附加信息:指定的演员表无效。
答案 0 :(得分:4)
int
是Int32
而不是Int64
的别名int != Int64
。您只能将盒装结构转换为相同类型或其Nullable变体。在这种情况下,它恰好是long / Int64或Nullable aka long?
。
要解决此问题,您需要在转换为long
之前投射到int
或仅使用Convert.ToInt32
var result = (int)(long)statement["Priority"];
或
var result = Convert.ToInt32(statement["Priority"]);