当前位置:  开发笔记 > 编程语言 > 正文

SQLCommand.ExecuteScalar() - 为什么抛出System.NullReferenceException?

如何解决《SQLCommand.ExecuteScalar()-为什么抛出System.NullReferenceException?》经验,为你挑选了1个好方法。

任何人都可以注意到以下功能可能出现的问题:

public string Login(string username, string password)
    {
        string result = "";
        string select = "SELECT user_id FROM [user] WHERE username = @username AND password = @password";
        SqlConnection conn = new SqlConnection(connectionString);
        SqlCommand cmd = new SqlCommand(select, conn);
        cmd.Parameters.AddWithValue("username", username);
        cmd.Parameters.AddWithValue("password", password);
        int userID = 0;
        try
        {
            conn.Open();
            userID = (int)cmd.ExecuteScalar();
            if(userID > 0)
            {
                result = addSession(userID);
            }
        }
        catch(Exception ex)
        {
            string sDummy = ex.ToString();
        }
        return result;
    }

不知道为什么行`userID =(int)cmd.ExecuteScalar(); 抛出一个例外.

谢谢



1> Charlie..:

很可能表中没有用户/密码的行.ExecuteScalar的文档说如果结果集为空则返回null,并且不能将null转换为int.

推荐阅读
kikokikolove
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有