2012-08-28 6 views
0

저는 CSV 파일을 구문 분석하고 런타임에 데이터베이스에 데이터를 입력하기위한 몇 가지 기본 코드를 작성했습니다. 이 코드의 변형 (다른 구분 기호와 열에 대한)은 여러 CSV 파일에서 잘 작동하지만 몇 가지 이유로이 코드는 2 열 파일에 대한 오류를 표시합니다. 슬로우매개 변수가 없습니다. [매개 변수 서수 = 1]?

using (StreamReader reader = new StreamReader(@"C:\Rawdata\Salesman.csv")) 
{ 
    string line; 
    StringBuilder query = new StringBuilder(); 

    while (!reader.EndOfStream) 
    { 
     line = reader.ReadLine(); 
     StringBuilder segment = new StringBuilder(); 

     for (int i = 0, segno = 0; i < line.Length; i++) 
     { 
      if (line[i] != '\t') 
      { 
       segment.Append(line[i]); 
      } 
      else 
      { 
       switch (segno) 
       { 
        case 0: 
         cmd.Parameters.Clear(); 
         cmd.Parameters.AddWithValue("@code", segment.ToString()); 

         break; 
        case 1: 
         cmd.Parameters.AddWithValue("@name", segment.ToString()); 
         break; 
        default: 
         break; 
       } 
       segno++; 
       segment.Clear(); 
      } 
     } 

     delCmd = "INSERT INTO sales_codes (code, name) VALUES (@code, @name)"; 
     cmd.CommandText = delCmd; 

     cmd.ExecuteNonQuery(); 

     query.Clear(); 
    } 
} 

는 예외입니다 :

SqlCeException - A parameter is missing. [ Parameter ordinal = 1 ] 

내가 파일에서 더블, 트리플 검사 다했습니다이는 테이블 스키마에 대한 코드와 모든 것이 잘 보인다. 내가 뭘 놓치고 있니?

+0

매개 변수보다 먼저 명령 텍스트를 설정할 필요가 있습니까? –

+0

또한 'swith/case' 문에서 매개 변수를 설정합니다. CSV의 * 모든 행 *에 대해 설정되어 있습니까? –

+0

그게 처음에 생각했지만 기쁨이없는 매개 변수를 추가하기 전에 명령 텍스트를 넣으려고 시도했습니다. 게다가 구문 분석했던 다른 파일에도 잘 작동했습니다. 어쨌든 고마워. – Anonymous

답변

1

이제 코드는 탭 (\t)이 발견 될 때만 매개 변수를 추가합니다. 각 행이 탭으로 끝나지 않으면 두 번째 매개 변수가 추가되지 않습니다. 이것은 귀하의 문제 일 수 있습니다.

+0

조금은 혼란스러워하고 수정했지만 오류가 계속 발생했습니다. 그러나, 내가 명시 적으로 cmd.Parameters.Add ("@ code", "Test")와 같은 매개 변수를 설정할 때; 등, 그것은 거기에 구문 분석 섹션 어딘가에 오류가 있어야합니다, 그래도 내가 그 밑으로 얻을거야 확신합니다. 감사. – Anonymous

관련 문제