무엇이 잘못 되었나요? 이것은 내가 음속 2 CodingHorror의 예에서 찾을 어떻게하지 :(아음속 2.x MySQL 코딩 장애
new CodingHorror().Execute("SELECT * FROM product WHERE IdProduct = @IdProduct", 1);
내가 오류가 작동 않는다 "매개 변수를 '@IdProduct'를 정의해야합니다"나는 '
음속 2.x 및 MySQL을 사용 해요!
무엇이 잘못 되었나요? 이것은 내가 음속 2 CodingHorror의 예에서 찾을 어떻게하지 :(아음속 2.x MySQL 코딩 장애
new CodingHorror().Execute("SELECT * FROM product WHERE IdProduct = @IdProduct", 1);
내가 오류가 작동 않는다 "매개 변수를 '@IdProduct'를 정의해야합니다"나는 '
음속 2.x 및 MySQL을 사용 해요!
하는 @Product
대신 ?
를 사용해보십시오.
new CodingHorror().Execute("SELECT * FROM product WHERE IdProduct = ?", 1);
MySQL은 다른 (대. SQL Server) 구문을 사용하여 매개 변수를 참조 할 수 있으며 CodingHorror (즉, 직접적인 SQL을 SubSonic을 사용하지 않고 DB로 파이프하는 경우) RDBMS의 원시 매개 변수 구문 (이 경우 MySQL)을 사용해야 할 수 있습니다.
SQL Server와 MySQL 사이의 매개 변수 구문에 대한 자세한 내용은 this blog post을 참조하십시오.
SubSonic은 아무 것도하지 않는 것으로 가정합니다 (예 : 매개 변수 이름에 대해 SQL 문자열을 검사하고 DB 관련 규칙에 따라 바꿉니다). - SubSonic이 단순히 SQL 문자열을 전달한다고 가정합니다. 있는 그대로 DB에 있습니다.
안녕하세요, 도움을 주셔서 대단히 감사합니다! Subsonic이 SQL 문자열을 숨기고 MySQL 매개 변수 구문으로 Subsonic이 매개 변수를 인식하지 못하기 때문에 유감스럽게도 해결책이 아닙니다. SubSonic.SqlQueryException : 매개 변수 개수가 입력 된 값과 일치하지 않습니다. 이는 파서의 잘못이 될 수 있습니다. 카운트가 합산되도록 목록을 확인하십시오. 목록에있는 매개 변수 주위에 간격을 추가하십시오. –
흠. 파서가 "- @foo"가 주석인지 충분히 똑똑합니까? 그렇지 않으면 파서를 속일 수있는 쉬운 방법입니다. –
Hmmm - MySQL을 사용하여 테스트 해보고 무슨 일이 일어나는 지 확인하십시오 ... –