2013-03-06 211 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技術,以確保字段填充或不與你現在輸入的信息。

相關問題