SQLite数据库查询异常处理
本文关键字:异常处理 查询 数据库 SQLite | 更新日期: 2023-09-27 18:00:40
我正在从SQLite数据库表中检索一些数据&我使用以下代码:-
try
{
for (double i = 10; i < 100; i++)
{
// Read in value
cmd.CommandText = "SELECT Value FROM Data WHERE Value like '" + i + "'";
Digit_Value = Convert.ToDouble(cmd.ExecuteScalar());
}
catch (Exception)
{
throw;
}
所有操作都按要求进行,直到它碰到数据库表中的Null
,然后抛出异常。
当抛出异常&例程应该继续到下一个记录。大量的谷歌搜索都没有发现任何有效的东西——有指针吗?
如果ExecuteScalar()方法返回Null(或DbNull?),则在尝试将其分配给Digit_Value:之前,您需要检测到这一点
cmd.CommandText = "SELECT Value FROM Data WHERE Value like '" + i + "'";
object o = cmd.ExecuteScalar();
if(o == Null) {
throw new Exception("Got null");
} else {
Digit_Value = Convert.ToDouble(o);
}
ExecuteScalar
返回查询中第一行的第一个单元格(MSDN参考)。
鉴于此,只需将您的查询修改为:
SELECT Value FROM Data WHERE Value like '@value' UNION select 0
如果LIKE不使用通配符,请使用=
。
try
{
cmd.Parameters.Add("@val", SqlDbType.Int32);
cmd.CommandText = "SELECT Value FROM Data WHERE Value = @val";
for (double i = 10; i < 100; i++)
{
// Read in value
cmd.Parameters["@val"].Value = i;
object res = cmd.ExecuteScalar();
double? Digit_Value = DBNull.Value.Equals(res) ? null : Convert.ToDouble(res);
}
catch (Exception)
{
throw;
}