【问题标题】:Not duplicating the data into a table when it's inserted插入时不将数据复制到表中
【发布时间】:2015-03-02 01:54:46
【问题描述】:

我在 C# 中做了一个注册算法。有两个文本框(用户、密码)和 1 个按钮(注册)。在注册按钮事件中,有一种方法可以将 textbox.texts 插入到用户表中的数据库中。 我怎样才能不在表中插入相同的用户? 例如:抛出错误消息“用户名已被占用”

谢谢! 这就是我所说的方法:

      public void InsertUser(string UserID,string UserPas)
          {

         string query = "INSERT INTO TabelaUtilizatori (name, password)VALUES('"+UserID+"', '"+UserPas+"')";

        if (this.OpenConnection() == true)
        {
            MySqlCommand cmd = new MySqlCommand(query, connection);
            cmd.ExecuteNonQuery();
            this.CloseConnection();
        }
    }

【问题讨论】:

  • 在数据库中使用触发器。触发器在插入之前检查用户名,当发现这不允许插入数据库时​​。
  • 我如何查看(表中)是否已经有使用该用户名的用户?

标签: c# mysql


【解决方案1】:

这不是最优雅的,但如果它对您来说执行得很好,那么首先运行一个简单的SELECT 查询就没有错:

SELECT * FROM TabelaUtilizatori WHERE name='" + UserID + "'";

如果SELECT 没有结果,则用户名是免费的。如果结果包含一行,则用户名已经存在。

或者,如果用户名是 TableaUtilizatori 表的主键,那么再次尝试插入相同的用户名将导致您可以捕获和报告的错误。

另一方面认为:将密码存储为纯文本通常是一个坏主意。至少您应该存储密码的哈希值。一个更好的解决方案是对其进行散列和加盐。这样,如果您的数据库遭到入侵,用户名和密码就不会以纯文本形式存在。

【讨论】:

  • 非常感谢,我想为你的答案投票,但我没有足够的声誉!
  • 没问题!如果您认为这是正确答案,您应该接受它,以便将来访问该网站的人知道(即使您无法投票,您也可以随时接受)。
【解决方案2】:
 string insertString = "INSERT INTO TabelaUtilizatori (name, password) VALUES('"+UserID+"', '"+UserPas+"')";
        string selectString = "SELECT COUNT(*) FROM TabelaUtilizatori where name=" + "'" + UserID + "'";
        if (this.OpenConnection() == true)
        {
            MySqlCommand cmd = new MySqlCommand(selectString, connection);
            int Result = 0;
            Result = Convert.ToInt32(cmd.ExecuteScalar());
            if (Result == 1)
            {
                MessageBox.Show("Username Already Exists");
                this.CloseConnection();
            }
            else{
              MySqlCommand cmdInsert = new MySqlCommand(insertString, connection);
            cmdInsert.ExecuteNonQuery();
            this.CloseConnection();
            MessageBox.Show("Inregistration Sucessful");
            }

        }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-03
    • 1970-01-01
    • 1970-01-01
    • 2012-06-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多