C# 使用SQLitePCL-WP8.1查找SqLite中的最大值

C# 使用SQLitePCL-WP8.1查找SqLite中的最大值,c#,sqlite,windows-phone-8,windows-runtime,C#,Sqlite,Windows Phone 8,Windows Runtime,我对将SQlite集成到通用应用程序非常陌生。我已使数据库启动并运行。但现在我想找到一列的最大值。它没有返回预期值。数据库中填充了数据 var db = App.conn; using (var statement = db.Prepare("SELECT MAX(Priority) as Priority FROM FOLDER; ")) { statement.Step(); var result = (int)statement["Priority"]; } 异常表示转换

我对将SQlite集成到通用应用程序非常陌生。我已使数据库启动并运行。但现在我想找到一列的最大值。它没有返回预期值。数据库中填充了数据

var db = App.conn;
using (var statement = db.Prepare("SELECT MAX(Priority) as Priority FROM FOLDER; "))
{
    statement.Step();
    var result = (int)statement["Priority"];
}
异常表示转换错误,但优先级为整数类型

编辑

JusWrite Trial.WindowsPhone.exe中发生类型为“System.InvalidCastException”的异常,但未在用户代码中处理 其他信息:指定的强制转换无效


int
Int32
而不是
Int64
的别名,因此
int!=Int64
。只能将装箱结构强制转换为相同类型或其可为null的变体。在这种情况下,它正好是long/Int64或可为null的aka
long?

要解决此问题,您需要在转换为
int
之前先转换为
long
,或者只需使用
Convert.ToInt32

var result = (int)(long)statement["Priority"];


进一步阅读
int
Int32
而不是
Int64
的别名,因此
int!=Int64
。只能将装箱结构强制转换为相同类型或其可为null的变体。在这种情况下,它正好是long/Int64或可为null的aka
long?

要解决此问题,您需要在转换为
int
之前先转换为
long
,或者只需使用
Convert.ToInt32

var result = (int)(long)statement["Priority"];


进一步阅读

发布实际错误消息。我还假设您在这一行
(int)语句[“Priority”]
中得到异常。如果我错了,请纠正我。@SriramSakthivel是的,这是它坠毁的地方。我已经更新了exceptionOk,请尝试
Console.WriteLine(语句[“Priority”].GetType())并更新post打印内容。返回SS Int64。转换为int32。如果你能贴出你的答案,我会标记它。谢谢作为答案发布,基本上问题在于装箱,您将无法将装箱的
Int64
转换为
Int32
。如果它没有装箱,那么一切都很好。请参考下面我的答案。发布实际的错误消息。我还假设您在这一行
(int)语句[“Priority”]
中得到异常。如果我错了,请纠正我。@SriramSakthivel是的,这是它坠毁的地方。我已经更新了exceptionOk,请尝试
Console.WriteLine(语句[“Priority”].GetType())并更新post打印内容。返回SS Int64。转换为int32。如果你能贴出你的答案,我会标记它。谢谢作为答案发布,基本上问题在于装箱,您将无法将装箱的
Int64
转换为
Int32
。如果它没有装箱,那么一切都很好。请参阅下面我的答案。或者直接转换为long:
var result=(long)语句…
或者直接转换为long:
var result=(long)语句…