我用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/