c# - 插入数据时不将数据复制到表中

标签 c# mysql

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

谢谢! 这就是我正在谈论的方法:

      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();
        }
    }

最佳答案

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

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

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

或者,如果用户名是 TableaUtilizatori 表的主键,则尝试第二次插入相同的用户名将导致错误,您可以捕获并报告该错误。

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

关于c# - 插入数据时不将数据复制到表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28796016/

相关文章:

php - 在进行 mysql 查询时将 php 变量设置为无穷大

c# - W7 : Clean up before go to stand by

c# - 对 IList 和 IEnumerable 使用泛型逆变

c# - 如何在 Entity Framework 4.0 中删除多对多循环?

c# - Entity Framework 数据库第一次重新生成让我失去手动更改

Java Hibernate EntityManager 同步

mysql - 从 SQL Server 转换为 MySQL - MERGE

python - 将 numpy 数组放入 Mysql 数据库的最快且最有效的方法

javascript - 为什么我的脚本只获取我的 php 表的第一行?下面是我的代码

c# - 如何在不同的浏览器中获取 Html 文档,当 Html 文档完全加载时作为图像?