2013-03-06 2 views
1

나는 users이라는 테이블을 가지고 있는데 그 중 두 필드는 loginname입니다.
이 필드 can not은 중복됩니다.
사용자가 새 등록을 만들 때 이미 name/login이 있는지 여부를 확인하는 방법을 만들었습니다.
사용자는 login/name을 수정할 수도 있습니다.
사용자가 등록 데이터를 편집하기 위해 페이지를 입력하면 이미 필드에 현재 데이터가 채워집니다.
3 개의 필드가 있습니다 [NAME] [EMAIL] [LOGIN].
사용자는이 중 하나 또는 모두를 한 번에 편집 할 수 있습니다 ...
편집하려고 시도 할 때 name/login이 이미 존재하는지 확인하는 방법을 어떻게 만들 수 있습니까?
아마도 쿼리입니까?
login에있는 select count 다음에 name 필드에?데이터가 이미 테이블에 있는지 확인하는 방법은 무엇입니까?

--UPDATE--
다음은 사용중인 데이터베이스 시스템에이를 떠나이 던질 수있는 오류를 처리해야 내 solution

답변

1

입니다. 모든 데이터베이스 시스템 (Access, Oracle, MS SQL 등)을 사용하면 테이블 필드를 Unique로 표시 할 수 있습니다. 즉, 테이블은 해당 값을 가진 필드가있는 레코드 하나만 보유 할 수 있습니다. 같은 필드에 두 개 이상의 레코드를 추가하려고하면 오류가 발생합니다. 응용 프로그램에서 오류를 catch하고 사용자에게 경고해야합니다. 어떤 종류의 데이터베이스 시스템을 게시하면 사용 방법을 보여줄 수 있습니다.

편집 :

Heres는 예입니다. SqlClient.SqlException 예외 클래스를 사용합니다. 고유 한 제약 조건에 대한 오류 코드가 무엇인지 잘 모르겠지만 중단 점을 가져올 수있는 변수를 catch에 추가했습니다. 영문 페이지에서

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 

:

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

안녕하세요 @ 제이슨! 나는'MySql'을 사용하고 있습니다. 그래서 try {} catch (Exception ex) {throw new Exception (""+ ex.Message); 어떻게 생각하니? 나는이 '독특한'일에 대해 몰랐다; s – PlayHardGoPro

+0

그래, 그 길이야. SQL DDL을 작성하는 경우 다음과 같은 고유 제한 조건을 설정할 수 있습니다. http://www.w3schools.com/sql/sql_unique.asp 또는 mySql Workbench를 사용하는 경우 열을 클릭하여 작성할 수 있다고 생각합니다. "Unique"를 선택하십시오 – jason

+0

그리고 다른 방법으로 작업 할 수 있습니까? 어쩌면 중복 기록을 삽입/편집하려고 할 때 사용자 지정 경고를 내릴 수 있습니다 ... – PlayHardGoPro

0

기본 키가 여기에 무엇 문이 해당 오류 코드와 일치 할 경우 그냥 변경?

테이블에 새 ID 열을 추가하면 문제가 해결 될 것이라고 제안합니다.

ID 열을 기반으로 행을 편집 할 수 있습니다.

예 : [사용자 ID] 필드를 추가하고 고유 ID 열을 지정하십시오. where 절에서 userid를 기반으로 업데이트 작업을 수행하십시오.

0

당신은 열 ID가 없거나 사용자 이름 열이 UNIQUE 같이 설정되지 않은 경우이 기능을 사용할 수있는 경우 :

기능 user_exists ($ 사용자 이름) {
$ 사용자 이름 = 살균 ($ 사용자 이름); // sanitize
return (mysql_result ("SELECT COUNT (user_name) FROM user_table WHERE username = '$ username'"), 0) == 1)?허위 사실; 사용자 이름을 등록하고 진실되지 않은 경우는

+0

당신은 C#에 그것을 넘겨 줄 수 있습니까? 나는'asp.net'을 사용하고 있습니다 ... 그리고 나는 PHP를 모른다; \ – PlayHardGoPro

+0

나는 데모 사이트에 C# 코드로 함수를 게시한다. [Link to see] (http://neuerra.com/demo/user_exist .txt) – Flavius69

+0

고마워요! 하지만 왜 'catch 예외'에'_retValue = true'를 설정 하는가? – PlayHardGoPro

0

입니다 당신은 당신의 데이터베이스에 고유 한 필드를 사용하는 경우는 현재 사용자가이 기능이 false를 돌려 자신의 이름 을 편집하고자하는 경우 신규 회원의 경우/또는 캐치를 시도


} PHP 또는 ASP 및 아약스 기술을 사용하여 입력 한 정보로 입력란이 채워지는지 확인하십시오.

관련 문제