2010-06-28 2 views
1

클라이언트 응용 프로그램의 쿼리 문자열이 있습니다. 그것은 서버에서C# 저장 프로 시저 문자열을 구문 분석하는 방법

string query="PROCS.DBO.APP_2370_ANALYST_S 'ABC' , 'TESTDATA' , 100"; 

같은 모든 매개 변수와 함께 제공, 나는 사항 String.split 기능을 사용하여 파라미터 객체 배열을 만들기 위해 클라이언트 응용 프로그램에서 문자열을 구문 분석하는 기능 (Util.getParametersFromString)를했다. 개체 배열을 만들기 위해 구분 기호로 ','및 ''를 사용했습니다.

는 그리고 매개 변수 문자열은 쉼표 나 따옴표를 포함하지 않는 경우 내가 잘 작동 코드

object[] parameters = Util.getParametersFromString(query); 
DbCommand cmd = dbconnection.GetStoredProcCommand("PROCS.DBO.APP_2370_ANALYST_S",  parameters); 

이하로 사용하여 DB 절차를 실행합니다. 매개 변수 문자열 중 하나에 쉼표 또는 단일 인용 부호가 하나 이상있는 경우.

string query="PROCS.DBO.APP_2370_ANALYST_S 'A,B,C' , 'Hi, Sam 'The Legend' Brown was here ' , 100"; 

매개 변수 배열이 제대로 오지 않았다 아래처럼. 이 문자열을 올바르게 구문 분석하는 방법을 알지 못했습니다.

상황. 이 문제를 해결하기 위해 조언을주십시오.

영어가 좋지 않습니다. 그래서 난 내 질문을 작성하지 않은 경우 너무 죄송 제대로

감사합니다, 공원

답변

1
당신은 작은 따옴표 탈출 할 수

-'''하게하십시오의 문제에 관해서는

string query="PROCS.DBO.APP_2370_ANALYST_S 'A,B,C' , 'Hi, Sam ''The Legend'' Brown was here ' , 100"; 

을 쉼표 - 함수가 작성된 방식에 따라 다릅니다. 쉼표를 이스케이프 처리하고 함수가이 이스케이프 시퀀스를 알고 있는지 확인해야합니다.

1

쿼리 문자열의 두 매개 변수가 모두 예와 같이 유연하고이 문자열이 Oded's answer에 제안 된대로 생성되는 방식을 변경할 수없는 경우 문제가 발생합니다.

예를 들어 "PROCS.DBO.APP_2370_ANALYST_S 'ABC' , 'ABC' , 'ABC' , 100" 쿼리는 첫 번째 매개 변수 "'ABC' , 'ABC'"과 두 번째 매개 변수 "ABC" 또는 그 반대로 해석 될 수 있습니다.

첫 번째 매개 변수에 '이 포함되어 있지 않은 경우 첫 번째 매개 변수는 '이고 두 번째 매개 변수는 세 번째와 마지막으로 ' 사이입니다.