【发布时间】:2018-04-19 20:00:25
【问题描述】:
SQL 语句正在检索行的 ID。但可能没有这样的行。当我在 GUI 工具中执行特定的 SQL 语句时,它返回“0 行在 0 毫秒内返回:...”。
但是,当我使用ExecuteScalarAsync<int> 执行相同的SQL 语句时,它返回0,并且没有发生异常或null。我怎么知道是否没有这样的行?理论上可以有一行ID为0。
PS: 它是我使用 Nuget (https://github.com/praeclarum/sqlite-net) 添加的 SQLite-net。它的版本是 1.4.118。 SQL 语句非常简单。我更改了字段名称,但基本上是这样的:
using SQLite;
public Task<int> GetLastID()
{
return RealDatabase.ExecuteScalarAsync<int>
("SELECT max(ID) FROM DATA)");
}
【问题讨论】:
-
也许使用
ExecuteScalarAsync<int?>? -
在没有匹配的时候返回
null,但是在有匹配的时候出现异常。消息是:NotSupportedException: Don't know how to read System.Nullable1[System.Int32]` -
@DamnVegetables 在问题本身中发布代码、查询和完整异常。不要在 cmets 中发布部分内容
-
@PanagiotisKanavos 该异常是对第一条评论的回应,不属于问题。 Imo 这个问题没有代码就可以了,而且 OP 清楚地表明不涉及异常。
-
@DamnVegetables 你在使用this provider? 那么你就不走运了,there's an open issue 关于仍然打开的 ExecuteScalar 的可空结果
标签: c# sqlite sqlite.net