2016-06-24 1 views
0

sqlite 데이터베이스가 있다고 가정합니다. 이 데이터베이스에는 5 열 (id, c1, c2, c3, c4)이있는 main이라는 테이블이 있습니다.C# 데이터 유형에 대한 개체의 양 (예 : params [])

클라이언트는 다음과 같이 보이는하는 executeQuery를 호출

public Dictionary<int, Tuple<string, string, string, string>> executeSql(string statement) { 
     var ret = new Dictionary<int, Tuple<string, string, string, string>>; 
     var dbcmd = conn.CreateCommand(); 

     for(int i = 0; i < Entries; i++) { 
      dbcmd.CommandText = statement.Replace("i", i.ToString()); 
      var reader = dbcmd.ExecuteReader(); 
      //.... Evalulate query.... 
      ret.Add(); //add to Dic 
     } 
    } 

나는 클라이언트가 자신의 성명에서 요구되는 얼마나 많은 열 모른다. 이 시나리오에서 제대로 작동 할 수있는 유형이 있습니까? 내가 원하는 것은 sth이다 :

Dictionary<int, Tuple<params[] string>> 

튜플에 추가 할 다양한 양의 문자열을 제공한다.

아무 것도없는 경우 빈 항목이있는 배열을 사용하는 대신이 문제를 해결할 수있는 깨끗한 방법이 있습니다 (루프를 깨뜨리고 읽고 읽는 것이 매우 끔직하므로). 매번 코드 (예 : executeSqlOne(), executeSqlTwo() 등)에 대해 동일한 코드의 90 %를 사용하십시오. 코드를 크게 부 풀리면됩니다.

+0

다른 진술의 예를 들려 줄 수 있습니까? Entries는 클라이언트가 요청하는 열 수라고 생각하십니까? 테이블 구조가 변경 될 수 있습니까? id, 매개 변수 번호, 값으로 테이블을 변경한다면 어떨까요? 이것으로 각 id-parameter 조합에 대한 값을 검색 할 수 있습니다. sql은 항상 동일하게 보이며 'Dictionary >' –

+0

예 Dictionary >이 결과를 모두 처리 할 수 ​​있습니다. 나는 지금 내 마음이 분명히 일하는 동안 휴식을 취할 것이다. – fasa123

답변

1

그럴 경우 Tuple<string, string, string, string> 대신 List<string>을 사용하면 걱정할 필요가 없습니다. 결과 컬럼을리스트에 추가하고 리턴하십시오.

+0

와우 정말 휴식을 취해야합니다. 네, 물론 당신은 완전히 옳습니다. – fasa123