2016-06-24 2 views
-1

안녕하세요! 도움이 필요해. 메모장에있는 checkListBox의 모든 문자열을 작성하고 SQL 스크립트를 실행하는 배치 파일로 만들기 위해 StreamWriter를 반복합니다.

상황 : 모든 checkLISTbox가 SQL이면 하나씩 StreamWriter로 저장 한 다음 SQLCMD를 사용하여 배치 파일에서 실행해야합니다. 그러나 나는 그것을 다시 반복 할 필요가있다. 의 2 또는 2.5 초 만이 (내가 Thread.Sleep(2000)를 사용하는 이유 먹으 렴) 전에 다음 체크 박스ChecklistBox에서 문자열을 쓰도록 StreamWriter를 반복하는 방법

 StreamWriter SaveFile = new StreamWriter(file_name); 
     try 
     { for (int i = 0; i < checkedListBox1.CheckedItems.Count; i++) 
      { 
       foreach (Object item in checkedListBox1.CheckedItems) 
       { 
        SaveFile.WriteLine(":r \"" + textBox1.Text + "\\" + item + "\""); 
        SaveFile.Close(); 

        //Create a batchfile for execution of consolidated script 
        string execute = "\\Script_Runner.bat"; 
        execute = textBox1.Text + execute; 
        StreamWriter SaveFile2 = new StreamWriter(execute); 
        SaveFile2.WriteLine("sqlcmd -S localhost -E -i " + textBox1.Text + "\\" + "test1.sql"); 
        SaveFile2.Close(); 

        //running the batchfile 
        string ScriptRun = "\\Script_Runner.bat"; 
        ScriptRun = textBox1.Text + ScriptRun; 
        Process.Start(ScriptRun); 
       } 
       this.Refresh(); 
       Thread.Sleep(2000); 
       i++; 

      } 
     } 
     catch 
     { 
      //error message every script 
     }            
    } 
    catch 
    { 
    //error message 
    } 

    richTextBox2.Text += "\nData Patch Completed.";     
} 
catch (Exception) 
{ 
    // error message upon clicking execute 
} 
+0

미안하지만, 나는 정말로 당신이 무엇을 요구하는지 이해하지 못합니다. "스트림 작가를 반복하고 싶습니다." 스트림 작가를 반복하고 있습니다. "모든 체크 박스는 SQL입니다." 아니요, 모든 체크 박스는 체크 박스입니다. 좀 더 설명이 필요하다고 생각합니다. – Jonathan

+0

* checkLISTbox인지 확인하고 싶습니다. 너 이해하지 못했 니? 아마도 도움을 줄 수 있습니다. StreamWriter-는 텍스트 패드/메모장에 글을 쓰는 사람입니다. Checklistbox에 문자열을 입력 할 때마다 메모장에서 전송 된 다음 스크립트를 실행하기 위해 batchfile로 전송됩니다. checkLISTbox가 완료 될 때까지 반복하면됩니다. –

답변

1

당신이 명확하게 표현하지 않았으므로에게있는 텍스트의 또 다른 라인을 포함하는 다음 배치 파일을 실행한다고 가정 해 봅시다 두 개의 루프가 필요합니다. 하나가 결함으로 간주됩니다. 루프의 첫 번째 항목에서 스트림을 닫는 것은 원치 않는 것일 수 있습니다. 루프 내에서 Streamwriter 인스턴스화를 이동했습니다. 어쩌면 그것은 당신을 위해 작동합니다.

  try 
      { 
        foreach (Object item in checkedListBox1.CheckedItems) 
        { 
         StreamWriter SaveFile = new StreamWriter(file_name); 
         SaveFile.WriteLine(":r \"" + textBox1.Text + "\\" + item + "\""); 
         SaveFile.Close(); 

         //Create a batchfile for execution of consolidated script 
         string execute = "\\Script_Runner.bat"; 
         execute = textBox1.Text + execute; 
         StreamWriter SaveFile2 = new StreamWriter(execute); 
         SaveFile2.WriteLine("sqlcmd -S localhost -E -i " + textBox1.Text + "\\" + "test1.sql"); 
         SaveFile2.Close(); 

         //running the batchfile 
         string ScriptRun = "\\Script_Runner.bat"; 
         ScriptRun = textBox1.Text + ScriptRun; 
         Process.Start(ScriptRun); 
         Thread.Sleep(2000); 
        } 
        this.Refresh(); 
      } 
      catch 
      { 
       //error message every script 
      }            
     } 
     catch 
     { 
     //error message 
     }     
       richTextBox2.Text += "\nData Patch Completed.";     
    } 
    catch (Exception) 
    { 
     // error message upon clicking execute 
+0

고마워요, 작동하지만 아직 메모장에 문자열이 추가됩니다. 다른 줄을 다음 줄로 보내는 방법은 무엇입니까? 어디에서 그것을 삽입 할 것인가? –

+0

나는 아직이 –

+0

이 StreamWriter를 SaveFile 값 = 새에서는 StreamWriter를 (FILE_NAME, true)를 시도 작동 나던 "" "+ 항목"그 \ 후 "Environment.NewLine"를 삽입하려고; –

관련 문제