c#
  • sql
  • 2013-01-09 2 views 1 likes 
    1

    "forename", "surname"및 "customerid"고객을 검색하여 SQL을 통해 콤보 상자에 표시하려고합니다.텍스트 입력을 사용하여 데이터베이스에서 정보 검색 C#

     string strSql = "SELECT customerID&\" \" & forename &\" \" & surname AS FullName, surname FROM customer WHERE [customerID]='" + txtCustomerID.Text +"'"; 
    

    문자열을 사용하고 int를 검색하기 때문에 "데이터 불일치 예외"가 발생합니다.

    +2

    ** SQL 쿼리를 작성하기 위해 문자열 연결을 사용하지 마십시오. 이 코드는 SQL 삽입에 취약합니다. ['boby-tables'] (http://bobby-tables.com/)와의 만남을 피하기 위해 항상 매개 변수화 된 쿼리를 사용하십시오. –

    +0

    [매개 변수화 된 쿼리가 SQL 주입에 도움이되는 방법] (http://stackoverflow.com/questions/5468425/how-do-parameterized-queries-help-against-sql-injection) –

    답변

    1

    그냥이 변경 : 당신이하면 FullName, 고객 곳에서 성 (姓)과 ''의 int로

    문자열 STRSQL = @는 "SELECT 때문에 고객 ID + '\'+ 뒤따라야 + '\'+ 성을 사용할 필요가없는 [customerID] = "+ txtCustomerID.Text;

    그러나 다른 사람들은 SQL 쿼리를 작성하기 위해 문자열 연결을 사용하는 것이 좋지 않다고 말했고, 매개 변수 나 사용자가 사용자로부터 얻은 데이터가있는 경우 다른 방법을 사용하는 것이 좋습니다.

    +0

    이제이 오류가 발생합니다 "구문 오류 연산자가 누락되었습니다.) '[CustomerID] =' " – Bunion

    +0

    연결에 &가 아닌가요? –

    +0

    둘 다 +와 & 나에게 같은 예외를 불행히도주지 마라./ – Bunion

    0

    모두가 말했듯이; 텍스트 필드에서 쿼리를 구성하지 않는 매개 변수화 된 쿼리 사용 : 또한 수행 할 수 있습니다

    SqlCommand sqlQuery = new SqlCommand("SELECT customerID, forename + ' ' + surname AS FullName FROM customer WHERE customerID = @customerID", sqlConnection); 
    sqlQuery.Parameters.AddWithValue("@customerID", Int32.Parse(txtCustomerID.Text)); 
    

    일부 오류 검사 txtCustomerID.Text에.

    관련 문제