집 >데이터 베이스 >MySQL 튜토리얼 >C#으로 MySQL에서 매개변수화된 쿼리를 사용할 때 IndexOutOfBoundsException을 수정하는 방법은 무엇입니까?
C#을 사용하는 MySQL의 매개변수화된 쿼리 오류 문제 해결
C#을 사용하는 MySQL에서 매개변수화된 쿼리를 사용할 때는 다음을 유발할 수 있는 일반적인 함정을 피하는 것이 중요합니다. 오류에. 자주 발생하는 문제 중 하나는 첫 번째 매개변수를 추가할 때 발생하는 IndexOutOfBoundsException입니다.
문제:
다음의 단순화된 코드 조각을 고려하세요.
private String readCommand = "SELECT LEVEL FROM USERS WHERE VAL_1 = ? AND VAL_2 = ?;"; public bool read(string id) { MySqlCommand m = new MySqlCommand(readCommand); m.Parameters.Add(new MySqlParameter("", val1)); m.Parameters.Add(new MySqlParameter("", val2)); }
이 코드를 실행하면 첫 번째 매개변수(index)를 추가하려고 할 때 오류가 발생합니다. 0).
해결책:
이 문제를 해결하려면 매개변수화된 쿼리를 정의하는 올바른 구문은 물음표(?) 대신 명명된 매개변수를 사용하는 것입니다. 명명된 매개변수는 더 강력하며 번호가 매겨진 자리 표시자 인덱스로 인한 혼란을 제거합니다.
private String readCommand = "SELECT LEVEL FROM USERS WHERE VAL_1 = @param_val_1 AND VAL_2 = @param_val_2;"; public bool read(string id) { MySqlCommand m = new MySqlCommand(readCommand); m.Parameters.AddWithValue("@param_val_1", val1); m.Parameters.AddWithValue("@param_val_2", val2); }
또한 ExecuteScalar 메서드를 사용하여 쿼리에서 단일 값을 가져와 코드를 단순화하는 것이 좋습니다. 이렇게 하면 데이터 판독기를 통해 반복할 필요가 없으며 결과를 원하는 데이터 유형(이 경우 정수)으로 직접 변환합니다.
public bool read(string id) { MySqlCommand m = new MySqlCommand(readCommand); m.Parameters.AddWithValue("@param_val_1", val1); m.Parameters.AddWithValue("@param_val_2", val2); level = Convert.ToInt32(m.ExecuteScalar()); return true; }
이러한 모범 사례를 사용하면 IndexOutOfBoundsException 및 C#을 사용하여 MySQL 데이터베이스에서 매개변수화된 쿼리의 안정적인 실행을 보장합니다.
위 내용은 C#으로 MySQL에서 매개변수화된 쿼리를 사용할 때 IndexOutOfBoundsException을 수정하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!