2012-06-26 5 views
0

문자열 배열의 값과 데이터베이스의 특정 열 값을 비교해야합니다. 어떻게해야합니까?문자열 값을 데이터베이스 값과 비교하십시오.

public void setvisibility(string user_ID) 
{ 
    SqlDataReader reader = null; 
    SqlConnection connection = new SqlConnection(WebConfigurationManager.ConnectionStrings["ctd_prrity_dbConnectionSting"].ConnectionString); 
    connection.Open();\ 
SqlCommand cmd = new SqlCommand("Select * from Admins); 

user_ID의 값을 Admins 테이블의 유일한 열과 비교해야합니다!

답변

0

당신이 그것을 할 수있는 방법은 다음과 같습니다

using(SqlConnection connection = new SqlConnection(WebConfigurationManager.ConnectionStrings["ctd_prrity_dbConnectionSting"].ConnectionString)) 
{ 
    connection.Open(); 
    SqlCommand cmd = new SqlCommand("Select 1 from Admins where [email protected]",connection); 
    cmd.Parameters.AddWithValue("@userid",user_ID); 
    SqlDataReader reader= cmd.ExecuteReader(); 
    if(reader.HasRows) 
    { 
    //user id found 
    } 
} 

이 방법은 SQL Injection 공격하는 경향이있다 그 이후 토니에 의해 대답에 주어진 옵션보다 안전되는 매개 변수화 쿼리를 사용합니다.

BTW : 질문에 "문자열 배열"을 언급했지만 코드는 매개 변수로 하나의 문자열 만 표시합니다. 그게 무슨 소리 니?

+0

사용자 ID 문자열을 얻고 있습니다. userID = User.Identity.Name.Split ('\\') [1]; 이런 식으로 본질적으로 혼란 스럽군요. – Pradit

+0

내가 틀렸다고 정정하면 컴퓨터의 로그인에 대한 사용자 ID를 얻고 있습니까? 예를 들어 Windows 사용자 이름이 "Domain \\ userID"와 비슷하게 설정되어 있고 사용자 ID를 얻기 위해 '\\'로 분할하는 중입니까? – Tony318

+0

예, 정확합니다. 이것은 내가 얻은 것입니다 오류 'System.Data.IDataReader' 'HasRows'에 대한 정의가없고 'System.Data.IDataReader'형식의 첫 번째 인수를 허용하는 확장 메서드 'HasRows'가 없습니다. – Pradit

0
sqlcommand("SELECT * FROM Admins WHERE column = " & user_ID); 

그래야합니다. 그것이하는 것은 user_ID와 동일한 경우 열의 값을 반환한다는 것입니다. 기본적으로 쿼리가 값을 반환하면 일치하는 항목이 있고 그렇지 않으면 일치하지 않습니다. 여기

+0

그리고 데이터베이스에 전달하기 전에 모든 변수를 살균하는 것을 잊지 마십시오. –

관련 문제