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,本文就介绍这么多,希望对您有所帮助,谢谢!

 

文章的版权

洪哥写文章很苦逼,如果本文对您略有帮助,点击感兴趣的广告支持洪哥!万分感谢!本文属于“洪哥笔记”原创文章,转载请注明来源地址:ExecuteNonQuery方法执行select返回值始终为0:http://www.splaybow.com/post/oledb-executenoquery-select-return-0.html

关注与收藏

如果您在服务器运维、网络管理、网站或系统开发过程中有任何疑问,洪哥以此为饭碗,请加QQ:115085382!
了解更多好文章,请关注我们的新浪微博和腾讯微博
亲,先存起来,方便以后再看啊!加入收藏夹的话,按Ctrl+D


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