2013-07-24 9 views
0

當我運行下面的代碼時,我得到如下的結果,它在richtextbox上每行都沒有分號和換行符。最後一行有兩個分號....有什麼辦法讓每行以分號結尾,然後在richtextbox上有一行空格?有沒有辦法讓每行以分號結尾,然後在richtextbox上有一行空格?

using (OracleCommand crtCommand = new OracleCommand(myCommand, conn1)) 
{ 
    using (OracleDataReader reader = crtCommand.ExecuteReader()) 
    { 
     while (reader.Read()) 
     { 
      if (!reader.IsDBNull(0)) 
      { 
       richTextBox1.AppendText(Environment.NewLine); 
       richTextBox1.AppendText(reader[0].ToString().TrimEnd('\r', '\n', ' ') + ";"); 
       richTextBox1.AppendText(Environment.NewLine); 
      } 
     } 
    } 
} 

結果:

ALTER TABLE "TBL_A" ADD ("FIELD_A3" DATE) 

ALTER TABLE "TBL_A" DROP ("FIELD_A6") 

ALTER TABLE "TBL_A" MODIFY ("FIELD_A2" VARCHAR2(50)) 

ALTER TABLE "TBL_A" MODIFY ("FIELD_A4" NUMBER(5,2) DEFAULT 0) 

ALTER TABLE "TBL_A" MODIFY ("FIELD_A4" NULL) 

ALTER TABLE "TBL_A" MODIFY ("FIELD_A5" NOT NULL ENABLE); 

; 

預期結果:

ALTER TABLE "TBL_A" ADD ("FIELD_A3" DATE); 

ALTER TABLE "TBL_A" DROP ("FIELD_A6"); 

ALTER TABLE "TBL_A" MODIFY ("FIELD_A2" VARCHAR2(50)); 

ALTER TABLE "TBL_A" MODIFY ("FIELD_A4" NUMBER(5,2) DEFAULT 0); 

ALTER TABLE "TBL_A" MODIFY ("FIELD_A4" NULL); 

ALTER TABLE "TBL_A" MODIFY ("FIELD_A5" NOT NULL ENABLE); 
+0

'myCommand'的價值是什麼? –

回答

0

你可以嘗試以下,看看是否可行:

using (OracleCommand crtCommand = new OracleCommand(myCommand, conn1)) 
        { 
         using (OracleDataReader reader = crtCommand.ExecuteReader()) 
         { 
          while (reader.Read()) 
          { 
           if (!reader.IsDBNull(0)) 
           { 
            richTextBox1.AppendText(string.Format("{0}{1}{2}{3}", Environment.NewLine, reader[0].ToString().TrimEnd('\r', '\n', ' '),";", Environment.NewLine)); 

           } 
          } 
         } 

        } 
+0

沒有工作:(任何其他建議? – user2593362

0

我敢打賭,你只有兩個結果。第一個是全文,第二個只是空字符串。

建議你調試它與破發點和局部變量證明這一點:

richTextBox1.AppendText(Environment.NewLine); 
var text = reader.GetString(0); 
//breakpoint on next line and inspect text 
richTextBox1.AppendText(text.TrimEnd('\r', '\n', ' ') + ";"); 
richTextBox1.AppendText(Environment.NewLine); 
+0

沒有工作:(任何其他建議? – user2593362

+0

什麼沒有工作?你得到2結果@weston建議?這似乎是最有可能的場景。 –

0

假設這裏所有的人是正確的,你只需要執行一個Read()操作。 這不完全是你問題標題的答案,但它可能是你需要的。

只是爲了澄清,我認爲使用下面的代碼是錯誤的,您應該自己清楚OracleDataReader究竟是什麼,以及Read()方法執行的是什麼。

 using (OracleCommand crtCommand = new OracleCommand(myCommand, conn1)) 
     { 
      using (OracleDataReader reader = crtCommand.ExecuteReader()) 
      { 
       reader.Read(); 
       string[] splitted = reader[0].ToString().Split(new char[] { '\n' }, StringSplitOptions.RemoveEmptyEntries); 

       foreach (string line in splitted) 
       { 
        richTextBox1.AppendText(Environment.NewLine + line.Trim() + ";" + Environment.NewLine); 
       } 
      } 
     } 
0

我認爲這將提供所需的結果:

richTextBox1.AppendText(string.Format("{0} ;\r\n" + Environment.NewLine, reader[0])); 

這裏要格式化字符串作爲一個整體,添加對象和所需的字符,轉化1成一行的所有過程。 使用此代碼將如下:

if (!reader.IsDBNull(0)) 
{ 
    richTextBox1.AppendText(string.Format("{0} ;\r\n" + Environment.NewLine, reader[0]));   
} 
+0

你的答案引發了低質量的後期過濾器,你可能想添加一些細節/解釋 – apaul

+0

謝謝,我真的不知道爲什麼,它真的不言自明我想,但再次感謝apaul。 – terrybozzio

+0

簡短的答案往往會跳過自動過濾器並且再多一點解釋也不會受到傷害。 – apaul

相關問題