首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >对象不能从DBNull转换到其他类型?C#

对象不能从DBNull转换到其他类型?C#
EN

Stack Overflow用户
提问于 2017-07-27 03:16:45
回答 2查看 694关注 0票数 0

我有一个数据库查询,当我在MySql中运行查询时,它会返回值。但是,当我在代码中运行对象时,无法将对象从DBNull转换为其他类型的异常。如何从代码中检索数据?

代码语言:javascript
运行
复制
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;
    }
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-07-27 05:11:15

使用以下代码:

代码语言:javascript
运行
复制
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;
    }
票数 3
EN

Stack Overflow用户

发布于 2017-07-27 03:51:15

解决该问题的一种方法是确保查询永远不返回null。您可以使用MySql ifnull函数来这样做,方法是将查询更改如下:

代码语言:javascript
运行
复制
Select ifnull(max(ar.ActualReading), 0) ...
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45340738

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档