2011-05-09 2 views
0

로그인 양식을 작성 중입니다. Login-id와 password가 Register 테이블에 저장된 값과 일치하면 Register 테이블의 모든 값을 검색하고 결과를 SqlDataReader 개체에 저장합니다. 이제 계정 ID에 액세스하고이 테이블에서 입력하려고합니다. 어떻게 할 수 있습니까? 그것? 로그인 양식 오류

나는 다음과 같은 코드 -

-------------------- Login.aspx.cs에 봐 주시기 바랍니다 말하려고하고 이해하기 -------------------------------------------------- -------------

나는 하나의 column.So의 값을 검색하는 방법을 잘 모릅니다
protected void Submit_Click(object sender, EventArgs e) 
{ 
string conStr = ConfigurationManager.ConnectionStrings["ROCConStr"].ConnectionString; 
SqlConnection scon = new SqlConnection(conStr); 
scon.Open(); 
SqlCommand cmd = new SqlCommand("select* from Register where email= @login_id and [email protected]", scon); 
SqlParameter Para; 
Para = cmd.Parameters.Add("@login_id", SqlDbType.Char); 
Para.Value = email.Text; 
Para = cmd.Parameters.Add("@password", SqlDbType.Char); 
Para.Value = pwd.Text; 
SqlDataReader reader = cmd.ExecuteReader(); 
if(reader.HasRows) 
{if (reader["account_type"]=="admin") /* error - Please see the bottom for more details.*/ 
Response.Redirect("http://localhost:1187/roc/WelcomeAdmin.aspx"); 
else 
Response.Redirect("http://localhost:1187/roc/WelcomeUser.aspx");} 
else 
{ Label1.Text = "UserID or password is incorrect."; } 
reader.Close(); 
scon.Close(); 
} 

================================================== 

<br>About the erro:- reader["account_type"]=="admin" 

, 난 그냥 내가하고 싶은 것을 보여주기 위해 입력했습니다. 이 코드를 테스트 한 결과 오류가 발생했습니다. "데이터가 없을 때 읽지 못했습니다."

+0

정말로 모든 단일 열을 원하지 않는 한'SELECT *'라고 쓰지 마십시오. – SLaks

+0

당신의 객체를'using' 문으로 처리해야합니다. – SLaks

+0

URL을 하드 코딩하는 대신 "~/WelcomeUser.aspx"로 리디렉션 할 수 있습니다. – turtlepick

답변

2

첫 번째 행으로 이동하려면 reader.Read()으로 전화해야합니다.

또는 (더 행이 없다면 null 또는) 전혀 DataReader를 사용하지 않고 직접 그 값을 반환 ExecuteScalar를 호출 한 후, 원하는에만 열을 선택하는 쿼리를 변경합니다.
(둘 이상의 열을 원하므로이 작업을 수행 할 수 없습니다.)

+0

@caspar : 편집 해 주셔서 감사합니다.
@Slaks : 지금부터 나는 암호로 그렇게 할 것이라고 믿습니다. – Rafee

1

'HasRows'가 있는지 만 확인했습니다. 리더를 발전시켜야합니다. reader.Read()

이렇게하면 문제가 해결됩니다. 또한 'using'문을 통합하여 객체의 범위를 제한하고 절대 경로가 아닌 상대 경로를 사용하도록 URL을 수정하는 것이 좋습니다. 그런 식으로 새로운 환경에 배포하거나 서버를 이동하면 하드 코딩 된 URL을 제거 할 필요가 없습니다.