c# - MySQL 检查用户是否存在 C#

标签 c# mysql

代码:

 static public void InsertUser(string userName, DataGridView DadataGridView1)
        {
            try
            {
                if (connection.State == ConnectionState.Closed)
                    connection.Open();

                MySqlCommand check_User_Name = new MySqlCommand("SELECT * FROM IP WHERE(Username = @username)", connection);
                check_User_Name.Parameters.AddWithValue("@username", userName);
                int UserExist = (int)check_User_Name.ExecuteScalar();

                if (UserExist > 0)
                {
                    MessageBox.Show("User Exist");
                }
                else
                {
                    MySqlCommand commandInsert = new MySqlCommand("INSERT INTO IP(Username) VALUES(@Username)", connection);
                    commandInsert.Parameters.AddWithValue("@username", userName);
                    commandInsert.ExecuteNonQuery();
                    commandInsert.Parameters.Clear();
                    MessageBox.Show("User Inserted sucessfuly");
                }

            }
            catch (MySqlException exception)
            {
                MessageBox.Show(exception.ToString());

            }
            finally
            {
                connection.Close();

            }

我想检查数据库中的重复项,但遇到问题

int UserExist = (int)check_User_Name.ExecuteScalar();

System.NullReferenceException was unhandled Message=Object reference not set to an instance of an object.

最佳答案

使用SELECT count(*) FROM IP WHERE(Username = @username)代替SELECT * FROM IP WHERE(Username = @username),因为。 ExecuteScalar() 只能处理单个值。 * 将获取所有列值。在这种情况下,您不能使用 .ExecuteScalar()

所以你的代码将是这样的:

 MySqlCommand check_User_Name = new MySqlCommand("SELECT count(*) FROM IP WHERE Username = @username", connection);
                check_User_Name.Parameters.AddWithValue("@username", userName);
                int UserExist = (int)check_User_Name.ExecuteScalar();    
                if (UserExist > 0)
                {
                    MessageBox.Show("User Exist");
                } 
                else
                  {
                //execute insert here
                  }

关于c# - MySQL 检查用户是否存在 C#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32455951/

相关文章:

c# - SpreadsheetLight 的行数

mysql - sqlite 插入同时删除完整的重复项

mysql - 拒绝用户 'root' @'localhost' 使用密码 : yes Exception 访问

MySQL:选择具有两个匹配字段的最新版本

c# - 数据表中的总结

c# - 向用户发送消息时的 PEER_ID_INVALID

C# 自定义控件属性

java - 如果使用 hibernate 条件传递所有主题,如何获取用户?

c#检测何时有太多对象

c# - 我如何让 resharper 为我构建一个基于当前字段或类中 Prop 的简单流畅的界面