OLEDB/ADO.NET : 모든 매개 변수를 교체 한 상태에서 명령의 텍스트를 가져옵니다.

StackOverflow https://stackoverflow.com/questions/178857

  •  05-07-2019
  •  | 
  •  

문제

텍스트를 얻을 수 있습니까? OleDbCommand 모든 매개 변수가 값으로 대체 되었습니까? 예 : 아래 코드에서 쿼리 텍스트를 얻는 방법을 찾고 있습니다.

SELECT * FROM my_table WHERE c1 = 'hello' and c2 = 'world'

매개 변수 할당을 마친 후

var query = "SELECT * FROM my_table WHERE c1 = ? and c2 = ?";
var cmd = new OleDbCommand(query, connection);
cmd.Parameters.Add("@p1", OleDbType.WChar).Value = "hello";
cmd.Parameters.Add("@p2", OleDbType.WChar).Value = "world";
도움이 되었습니까?

해결책

아니요 : 매개 변수 컬렉션을 직접 반복해야합니다. 사용해야 할 때 특히 고통 스럽습니다. ? 그보다는 구문 @parametername 통사론.

그 이유는 전체 문자열이 절대 조립. 매개 변수는 서버로 전송되어 데이터로 취급되며 문자열에 포함되지 않습니다.

모두 똑같이, 나는 당신의 고통을 이해합니다. 그들이 어떤 종류를 포함 시켰다면 좋았을 것입니다. .ComposeSQL() 당신이 호출 할 수있는 방법 디버깅 목적, 아마도 생산에 사용을 피하는 데 도움이되는 컴파일러 경고도 생성 될 수 있습니다.

다른 팁

어떤 쿼리가 실행되었는지 확인하고 프로그래밍 방식으로 작업 할 필요가없는 경우 SQL 프로파일 러를 사용할 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top