2010-05-22 6 views
2

저는 초보자 코더입니다. 사용자 ID를 가진 사용자를 등록하는 C# Asp.Net을 사용하여 프로젝트를 만들고 있습니다. 이제는 사용자 ID가 있는지 확인하는 방법입니다. 사용자 테이블에 이미 존재하거나 등록하려고 할 때 SQL Server 2000을 사용하고 있습니까?사용자 ID를 확인하는 방법

+0

어떤 기술 데이터베이스에 액세스하기 위해 사용하고 있습니까? –

+0

나는 ado.net을 사용하고있다 – Sheery

+0

안녕 나는 이것을 사용하고 있지만 그것은 오류를주고있다 CS0103 : 이름 'User_id'는 현재 컨텍스트에 존재하지 않습니다. 내 코드 샘플은 다음과 같습니다. con = new SqlConnection ("server = NEW-80DF4B540E3; database = Cv_Manage; uid = sa; pwd = micron"); cmd = new SqlCommand ("select * from tbl_userlogin 여기서 User_id = username. if (username.Text == User_id) { MessageBox.Show ("User Id already already"); } – Sheery

답변

10

귀하의 의견에있는 코드를 토대로, 누구나 추천 할 수 있다면 ADO.NET을 사용하여 데이터를 쿼리하는 방법에 대한 좋은 입문서가 필요하다고 말하고 싶습니다.

우선 "쿼리에"username.Text "를 사용할 수 없으며 SQL Server는 ASP.NET 페이지와"사용자 이름 "TextBox에 대해 아무것도 모릅니다.

당신은 당신의하는 SqlCommand에 매개 변수를 전달해야합니다 (같은 문자열을 구축하지 할 당신이 알고 싶다면 + username.Text, "SQL 인젝션 공격"에 대한 구글 "USER_ID =이 tbl_userlogin SELECT * FROM" 이유는 다음과 같습니다.

SqlCommand cmd = new SqlCommand("select * from tbl_userlogin where User_id = @UserID", con); 
    SqlParameter param = new SqlParameter(); 
    param.ParameterName = "@UserID"; 
    param.Value = username.Text; 
    cmd.Parameters.Add(param); 

그런 다음 실제로 명령을 실행하고 SqlDataReader를 다시 가져와야합니다. C# 코드에서 데이터베이스의 필드를 참조 할 수는 없으므로 CS0103 컴파일 오류가 발생합니다.

SqlDataReader reader = cmd.ExecuteReader(); 

이제 SqlDataReader에는 쿼리의 결과가 있습니다. 신경 써도 뭔가를 찾았는지 여부에 상관없이 HasRows 속성을 사용하여 아무 것도 반환하지 않았는지 확인할 수 있습니다. http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqldatareader.aspx - -

if (reader.HasRows) 
    { 
     MessageBox.Show("User Id already exists"); 
    } 

는 SqlDataReader를 읽기 최대 필요하면 실제로 결과에 액세스하는 방법을 배울 수 있습니다.

3

당신은 단순히 데이터베이스에서 사용자에 대한 조회 할 수 있습니다

select * from User where user_id=<new-input-id> 

을 사용자가 촬영되어 있지 않은 경우, 당신은 테이블에 삽입 할 수 있습니다 의미있는 기록이 있다면.

+0

안녕하세요. 사용하고 있지만 오류가납니다. CS0103 : 이름이 ' User_id '가 현재 컨텍스트에 없습니다. 내 코드 샘플은 다음과 같습니다. con = new SqlConnection ("server = NEW-80DF4B540E3; database = Cv_Manage; uid = sa; pwd = micron"); cmd = new SqlCommand ("select * MessageBox.Show ("사용자 ID가 이미 존재합니다");} – Sheery

+0

: 기본 사항이 누락되었습니다. : 실행 한 적이 있습니까? 쿼리가 올바른지 확인하십시오. 쿼리 - select * from tbl_userlogin User_id = 'username.text'이고 코드에 User_id가 선언되어 있습니까? –

+0

User_id i 테이블의 데이터베이스 필드 tbl_userlogin 여기서 username은 사용자가 값을 입력하는 텍스트 상자입니다. – Sheery

0

매우 간단합니다. 먼저 원하는 사용자의 레코드를 얻으려고 (선택)합니다.

`Select * from UserTable where userId = <your-input-userid>` 

모든 레코드가 반환되면 사용자가 이미 존재 함을 의미합니다.
레코드가 반환되지 않으면 동일한 사용자 ID가 이미 존재하지 않으며이 사용자 ID를 새 사용자로 사용한다는 의미입니다.

관련 문제