2014-10-08 4 views
0

오라클과의 작업 경험이 없으며 Oracle XE를 사용하여 코드를 테스트하고 있습니다.형식으로 목록을 사전으로 변환

작은 문제가 있습니다. 도움을 받기를 바랍니다.

글쎄, 나는 SELECT 문을 동적으로 생성해야하는 교차 DB 플랫폼 응용 프로그램을 빌드하려고합니다. 오라클이 열 이름이 따옴표로 묶일 것으로 기대하기 때문에 오라클을 제외한 나머지 모두에 대해 성명을 발표했습니다. 그렇지 않으면 "INVALID IDENTIFIER"오류가 발생하기 시작합니다.

예를 들어 다음 문장은 나에게 적합하지 않지만 따옴표에 firstname을 입력하면 작동합니다.

SELECT firstname 
FROM 
"emp" 

그러나,이

SELECT "firstname" 
FROM 
"emp" 

지금 내가 일하고 코드의 조각에 돌아 오는 작동합니다.

var sourceBuilder = new StringBuilder(); 

if (sourceType == DataSource.OracleServer) 
{ 
    sourceBuilder.Append("SELECT ") 
     .Append(String.Join(", ", (mappedColumnsList.Select(x => x.Key)))) 
     .Append(" FROM ").Append(sourceAttribute); 

} 
else 
    sourceBuilder.Append("SELECT ") 
     .Append(String.Join(", ", mappedColumnsList.Select(x => x.Key))) 
     .Append(" FROM ").Append(sourceAttribute); 

이제 원본 유형이 Oracle 인 경우 사전을 병합하는 위치에 큰 따옴표를 추가해야합니다.

나는 분명히

sourceBuilder.Append("SELECT ") 
    .Append(String.Join(", ", string.Format("\"" + mappedColumnsList.Select(x => x.Key) + "\""))) 
    .Append(" FROM ").Append(sourceAttribute); 

그러나,이 나던 작품을 사용했습니다.

답변

3

는이 작업을 변경하려면 :

string.Format("\"" + mappedColumnsList.Select(x => x.Key) + "\"") 

에 :

mappedColumnsList.Select(x => "\"" + x.Key + "\"") 
+0

감사합니다! 그거야. – Navyseal

관련 문제