ExecuteNonQuery方法执行select返回值始终为0


关键词

ExecuteNonQuery 返回值

摘要

本文介绍C#进行数据库编程时,使用OleDbCommand.ExecuteNonQuery执行select语句时始终返回值为0。

这两天洪哥在写一个数据库的小程序,想使用OleDbCommand.ExecuteNonQuery来执行一个SQL语句,通过这个SQL语句查出来的行数来进行相应的逻辑判断(如是否登录成功)。尴尬的是,洪哥通过OleDbCommand.ExecuteNonQuery得到的返回值一直是0,不管SQL语句是否能查到记录。

代码如下:

    public static bool ExecuteNonQuery(string strSql, out int intCount)
    {
        intCount = -1;

        objCommand.CommandType = System.Data.CommandType.Text;
        objCommand.CommandText = strSql;
        if (OpenConn())
        {
            objCommand.Connection = objConnection;
            intCount = objCommand.ExecuteNonQuery();
            return true;
        }
        else
        {
            return false;
        }
    }

后来上网了解一下了,原来OleDbCommand.ExecuteNonQuery返回值是对数据库的影响行数,而Select语句只是从数据库中取出记录,并没有“影响”数据库,所以返回值为0.

于是,洪哥改使用OleDbCommand.ExecuteScalar函数,代码如下:

    public static bool ExecuteScalar(string strSql, out int i)
    {
        i = -1;

        objCommand.CommandType = System.Data.CommandType.Text;
        objCommand.CommandText = strSql;
        if (OpenConn())
        {
            objCommand.Connection = objConnection;
            i = (int)objCommand.ExecuteScalar();
            return true;
        }
        else
        {
            return false;
        }
    }

相应的SQL语句也由“select * from [表名] <条件>” 改成了 “select count(1) from [表名] <条件>”,这样就没有问题。得到的返回值就是正常的匹配到的条数了。

洪哥写这篇文章,希望大家遇到相同的问题时可以少走弯路。

关于ExecuteNonQuery方法执行select返回值始终为0,本文就介绍这么多,希望对您有所帮助,谢谢!

 

要饭二维码

洪哥写文章很苦逼,如果本文对您略有帮助,可以扫描下方二维码支持洪哥!金额随意,先行谢过!大家的支持是我前进的动力!

文章的版权


如果您在服务器运维、网络管理、网站或系统开发过程有需要提供收费服务,请加QQ:8771947!十年运维经验,帮您省钱、让您放心!
亲,如果有需要,先存起来,方便以后再看啊!加入收藏夹的话,按Ctrl+D

« C#判断字符串是否为日期格式 修改datagridview边框颜色 »