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,然后抛出异常。

当抛出异常&例程应该继续到下一个记录。大量的谷歌搜索都没有发现任何有效的东西——有指针吗?

SQLite数据库查询异常处理

如果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;
}