首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >reader.GetDouble需要int吗?

reader.GetDouble需要int吗?
EN

Stack Overflow用户
提问于 2017-02-10 07:31:05
回答 3查看 707关注 0票数 0

目前,我正在从数据库中获得一个雇员在一定时期内的totalhoursdouble格式的总记录,但问题是当我检查数据库时,让我们说雇员没有一个迟到的记录,这就形成了reader = null。因此,我决定使用isDBNull,但是当我插入if (!myReader.IsDBNull(myReader.GetDouble("total")))时,myReader.Getdouble("total")会生成一个错误,其参数为

系统不能将double转换为‘`int’

代码语言:javascript
复制
        cc.SetCMD(@"SELECT SUM(AccHours) AS total FROM mia_payroll.tbl_late WHERE COP_ID = @ID AND EID = @EID;");
        using (myConn = new MySqlConnection(ConnectionClass.GetConnection()))
        {
            myConn.Open();
            using (cmDB = new MySqlCommand(cc.GetCMD(), myConn))
            {
                cmDB.Parameters.AddWithValue("@ID", lblCOID.Text);
                cmDB.Parameters.AddWithValue("@EID", EID);
                try
                {
                    using (myReader = cmDB.ExecuteReader())
                    {
                        while (myReader.Read())
                        {
                            if (!myReader.IsDBNull(myReader.GetDouble("total")))
                            {
                                total = myReader.GetDouble("total");
                            }
                            else
                            {
                                total = 0;
                            }
                            txtLate.Text = System.Convert.ToString(total);
                        }
                    }
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message);
                }
            }
            myConn.Close();
        }
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-02-10 07:36:57

这是因为.IsDBNull()需要要检查DBNULL的列的int序号位置值。您正在从double传递myReader.GetDouble()值类型。官方文件:https://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqldatareader.isdbnull(v=vs.110).aspx

只需更改为GetOrdinal

代码语言:javascript
复制
if (!myReader.IsDBNull(myReader.GetOrdinal("total")))
票数 1
EN

Stack Overflow用户

发布于 2017-02-10 07:37:55

您需要将列索引传递给IsDBNull

!myReader.IsDBNull(myReader.GetDouble("total"))替换为:

代码语言:javascript
复制
!myReader.IsDBNull(myReader.GetOrdinal("total"))
票数 1
EN

Stack Overflow用户

发布于 2017-02-10 07:38:43

数据库中整个字段的数据类型是什么?如果您的字段不是double,那么您就不能将其解析为double。该错误清楚地表明,在数据库中,该字段的时间为int,而不是双倍,

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42153823

复制
相关文章

相似问题

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