2013-03-06 166 views
1

我有一个名为users的表,它的两个字段是loginname
这些字段can not重复。
当用户要创建一个新的注册时,我已经做了一个方法来检查name/login是否已经存在。
但用户也可以编辑他的login/name
当用户进入页面编辑他的注册数据时,它已经用当前数据填充字段。
我有3个字段[NAME] [EMAIL] [LOGIN]
用户只能一次编辑其中的一个或全部......
如何创建一个方法来检查name/login是否已存在或未尝试编辑它?
也许是查询?
A select countlogin然后在name字段?如何检查表上的数据是否已经存在?

--UPDATE--
这里是我的solution

回答

1

你应该离开这个给你所使用的数据库系统和处理可能抛出的任何错误。所有数据库系统(Access,Oracle,MS SQL等)都允许您将表格字段标记为唯一。这意味着该表只能保存一个带有该值的字段的记录。如果您尝试添加具有相同字段的多条记录,则会引发错误。您的应用程序应该捕获该错误并提醒用户。如果你发布你正在使用的数据库系统,我可以告诉你如何做到这一点。

编辑:

继承人是一个例子。这使用SqlClient.SqlException异常类。我不确定什么错误代码是唯一的约束,但我在catch中添加了一个变量,您可以放置​​一个断点来获取。只要改变if语句来匹配错误代码:

Try 
     'your database insert attempt here 
    Catch ex As SqlClient.SqlException 
     Dim sqlErrorNumber = ex.ErrorCode 
     If (sqlErrorNumber = 1) Then 
      Me.lblWarning.Text = "Please select a unique ID" 
      Me.lblWarning.Visible = True 
      Me.lblWarning.ForeColor = Drawing.Color.Red 
      Me.lblWarning.Font.Bold = True 
     End If 

    End Try 

在aspx页面:

<asp:Label ID="lblWarning" runat="server" Visible="false"></asp:Label> 
+0

嗨@jason!我使用'MySql' ...所以,如果我做了这样的事情:'try {} catch(Exception ex){throw new Exception(“”+ ex.Message);'?你怎么看 ?我不知道这个'独特'的东西; s – PlayHardGoPro 2013-03-06 12:02:51

+0

是的,这是要走的路。你可以像这样设置唯一的约束,如果你正在编写SQL DDL:http://www.w3schools.com/sql/sql_unique.asp或者如果你使用的是mySql工作台,我相信你可以点击列并点击选择“独特” – jason 2013-03-06 12:14:40

+0

并且有没有不同的方式来使用它?可能在尝试插入/编辑重复记录时发出自定义警告... – PlayHardGoPro 2013-03-06 12:33:40

0

什么是你的主键吗?

我建议,在表中添加新的标识列将解决问题。

您可以根据标识列编辑行。

例如:添加[UserID]字段并将其设为唯一标识列。然后根据where子句中的userid执行更新操作。

0

,如果你没有一个列ID或用户名,如果列没有设置诸如UNIQUE您可以使用此功能:

功能user_exists($用户名){
$用户名=的sanitize($用户名); // sanitize
return(mysql_result(mysql_query(“SELECT COUNT(user_name)FROM user_table WHERE username ='$ username'”),0)== 1)?真假;
}

新成员/或如果当前​​用户希望编辑自己的用户名 这个函数返回false,如果用户名未注册和真实的,如果它是

+0

你可以把它传递给C#吗?我正在使用'asp.net' ...并且我不知道php; \ – PlayHardGoPro 2013-03-06 12:29:29

+0

我将C#代码中的函数发布到我的演示站点[请参阅链接](http://neuerra.com/demo/user_exist .txt) – Flavius69 2013-03-06 13:07:08

+0

谢谢你!但为什么它在'catch exception'上设置'_retValue = true'? – PlayHardGoPro 2013-03-06 13:19:36

0

你应该在你的数据库中使用独特的领域,尝试捕捉在PHP或ASP和AJAX技术,以确保字段填充或不与你现在输入的信息。

相关问题