c# - 对象不能从 DBNull 转换为其他类型? C#

标签 c# mysql

<分区>

我有一个数据库查询,当我在 MySql 中运行查询时,它会返回值。但是当我在代码中运行它时,我得到 Object cannot be cast from DBNull to other types 异常。如何从代码中检索数据?

public int getLatestReading(string connstr, string gId, string mId, DateTime date)
    {

        int active = 0;
        MySqlConnection myconn = new MySqlConnection(connstr);
        String sqlstr = "Select max(ar.ActualReading) From actualmeterreading ar Inner Join meterreadingrecords mr On mr.ActualMeterReadingID = ar.ID Inner join machinemeterreadinglist mml on mml.ID = ar.MachineMeterReadingId Inner join grouping g on g.ID = mml.Grouping inner join machines m on m.ID = mml.MachineID where g.ID = '" + gId + "' and m.ID = '" + mId + "' and mr.rDate > '" + date + "'";
        MySqlCommand cmd = new MySqlCommand(sqlstr, myconn);
        myconn.Open();
        active = Convert.ToInt32(cmd.ExecuteScalar());
        myconn.Close();
        myconn.Dispose();
        return active;
    }

最佳答案

使用下面的代码:

public int getLatestReading(string connstr, string gId, string mId, DateTime date)
    {

        int active = 0;
        MySqlConnection myconn = new MySqlConnection(connstr);
        String sqlstr = "Select max(ar.ActualReading) From actualmeterreading ar Inner Join meterreadingrecords mr On mr.ActualMeterReadingID = ar.ID Inner join machinemeterreadinglist mml on mml.ID = ar.MachineMeterReadingId Inner join grouping g on g.ID = mml.Grouping inner join machines m on m.ID = mml.MachineID where g.ID = '" + gId + "' and m.ID = '" + mId + "' and mr.rDate > '" + date + "'";
        MySqlCommand cmd = new MySqlCommand(sqlstr, myconn);
        myconn.Open();
        active = !Convert.IsDBNull(cmd.ExecuteScalar())?Convert.ToInt32(cmd.ExecuteScalar()):0;
        myconn.Close();
        myconn.Dispose();
        return active;
    }

关于c# - 对象不能从 DBNull 转换为其他类型? C#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45340738/

相关文章:

php - 使用 PHP 检测 MySQL 数据库中的循环

mysql - 通过bindModel()w/o递归访问HABTM关系的关联模型

mysql - 无法使用 SpringMVC 和 Hibernate Autowiring 字段

c# - 从驻留在转发器控件内的用户控件调用父页面中的方法

php - 必须有一个更简单的方法..从 mysql 中提取数据

php - 如何将年份转换为unix时间戳?

c# - 如何让Serilog从appsettings.json登录到web输出目录?

c# - 多重签名不起作用

c# - SetLockoutEndDateAsync 未更新数据库中的值

c# - 可以在静态/常量成员上使用处理器 #if 吗?