我正在检索一些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
,然后抛出异常。
当抛出异常时,我需要将值0.00分配给变量Digit_Value&amp;例程应该继续下一个记录。许多谷歌搜索发现没有任何可行的 - 任何指针?
答案 0 :(得分:0)
如果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);
}
答案 1 :(得分:0)
ExecuteScalar
返回查询中第一行的第一个单元格(MSDN Reference)。
鉴于此,只需将您的查询修改为:
SELECT Value FROM Data WHERE Value like '@value' UNION select 0
答案 2 :(得分: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;
}