"검색"패턴이 매개 변수에 저장되어있는 데이터베이스의 각 행에 대해 업데이트/바꾸기 기능을 수행하려는 아래 코드가 있습니다. 그러나 VB.NET 프로그램에서 쿼리를 실행하면 프로그램에서 해당 프로그램이 실행되는 행을 건너 뜁니다.매개 변수화 된 쿼리에서 Replace() 함수 사용
예를 들어 intQuestionID
변수가 4로 설정되었다고 가정하십시오. QuestionStacks
테이블 내에서 값은 ;4;0;14;24;34;
입니다. SQL은 첫 번째 ;4;
을 ;0;
으로 대체해야하지만 그렇지 않습니다. 사실, 아무것도 변경되지 않습니다. 값이 ;4;
인 경우에도 마찬가지입니다.
Dim sqlClearQuestion As New OleDb.OleDbCommand("UPDATE QuestionStacks SET QuestionData = REPLACE([QuestionData], "";@0;"", "";0;"") ", DBConnection)
sqlClearQuestion.Parameters.AddWithValue("@0", intQuestionID)
sqlClearQuestion.ExecuteNonQuery()
Access 2016의 쿼리 작성기에서 SQL을 실행하여이 쿼리를 검사했는데 의도 한대로 작동합니다. 그러나이 VB.NET 함수에서 사용하려고하면 원하는 결과가 나오지 않습니다. 이것을 위해 어떤 변화가 필요합니까?
N.B. Access SQL에 .AddWithValue
이 필요하지 않으며 실제로 다른 것으로 변경되었음을 알고 있습니다 (Read : https://stackoverflow.com/a/6794245/692250). 그러나 하나의 매개 변수 만 있으면 문제가 발생하지 않습니다.
명령이 정상적으로 보입니다. 디버깅을 위해 매개 변수없이 시도하십시오 (예 : 원하는 값을 하드 코드하십시오). 이것은 거래 내에서가 아니라 오른쪽 DB를 가리키고 있는지 확인하는 것입니다. – FloatingKiwi
@FloatingKiwi, 그랬습니다. 그리고 Access DB를 보면 원하는 결과를 얻을 수 있습니다. –