사용자가 올바른 암호를 가지고 있는지 확인하기 위해 호출되는이 간단한 메서드가 있습니다. 왜 작동하지 않는지에 대한 도움이 필요하십니까? 이것은 Microsoft SQL Server 용입니다.SQL 문에 문제가있어 작동하지 않습니다.
public bool UserNameExists()
{
using (SqlConnection con = new SqlConnection("CONNECTION STRING AQUI!"))
{
con.Open();
try
{
using (SqlCommand command = new SqlCommand(string.Format("SELECT * FROM Policia WHERE NumeroPlaca = '{0}' AND Password = '{1}'", Session.Contents["username"], Session.Contents["password"]), con))
{
SqlDataReader reader = command.ExecuteReader();
if (reader.FieldCount > 0)
{
return true;
}
else
{
return false;
}
}
}
catch
{
}
return false;
}
}
정의하는 "작동하지 않는". 그것은 추락합니까? 예외? (그렇다면 세부 정보를 게시하십시오), 데이터가 생성되지 않습니까? 잘못된 결과를 주시겠습니까? (그렇다면 무엇을 얻었고 무엇을 기대했는지 게시하십시오.) –
작동하지 않는 부분은 무엇입니까? 빈 catch 블록을 제거 할 때 오류가 발생합니까? 사용자 이름과 비밀번호는 "안전한"문자 만 포함하도록 보장됩니까? –
코드에 많은 문제가 있습니다. 첫째, SQL 인젝션이 아닌 매개 변수를 사용해야합니다. 그렇지 않으면 작은 Bobby Tables (http://xkcd.com/327/)가 데이터베이스를 완전히 죽일 것입니다. 둘째, 당신은 결코 그런 예외를 삼켜서는 안되며, 특정 예외 만 처리하면됩니다. 셋째, 일치하는 행이 있는지만을 알고 싶다면'SELECT *'을 사용하면 안되며, 필요한 것보다 더 많은 데이터를 검색하게됩니다. 간단한 'SELECT 1 AS x'조차도 충분합니다. –