2013-11-14 116 views
0

我在做一个C# MySQL注册系统,我已经连接了一个登录系统。 当我向数据库注册新用户并尝试输入已经在数据库中的用户名时,该用户名无效(ofcourse)。我有这个命令:C#MySQL注册系统 - 选择命令

String query = "SELECT password FROM accounts WHERE username = @username"; 

我也有一个系统(在同一个项目中)将项目注册到数据库中。

但我希望它有,你不能再次添加第一个和第二个值。

这样一个例子:

我在数据库中的一个项目了,值1是“1234”和值2是“4321”。

但是,当我添加另一个,我想它说(如果你输入相同的数据),“4321”已经在数据库中。或者“1234”已经在数据库中。

所以不只是其中之一像我的登录系统。

感谢:D

+0

最好的方法是将数据库中的用户名列设置为UNIQUE,当你尝试插入一个重复的用户名时,数据库会抛出一个错误,你可以从代码中处理它。 – unlimit

+0

是的,我已经:p,但我希望这两个值。 – Bas

+0

所以当你添加一个项目记录时,你为它赋值1和值2?看到你的相关模式 – OGHaza

回答

0

为什么不这样做为您的用户注册?

SELECT COUNT(*) FROM values WHERE value1 = @value1 AND value2 = @value2 

,或者如果你需要每一个人的价值是独一无二的:

SELECT COUNT(*) FROM values WHERE value1 = @value1 OR value2 = @value2 

如果返回一个数字,那么你知道值已经存在,所以他们展示的错误,不做INSERT

由于不受限制的说法,最好的办法是使列UNIQUE,然后处理在执行INSERT时抛出的错误。

+0

我试图使两个字段''UNIQUE''但它没有任何区别tbh,我没有插入这一行tho: String query =“SELECT 1 FROM uitgifte WHERE laptop = @laptop AND leerling = @leerling”; 但是“1”代表什么? – Bas

+0

顺便说一下,我正在为学生制作笔记本电脑注册系统。 – Bas

+0

'1'表示如果发现任何东西,它将返回一个包含'1'的行,否则不返回任何东西,你可以将它改为'COUNT(*)',然后总是返回'1 '(找到1条记录)或'0'(没有记录) – OGHaza