2016-03-22 10 views
0

Ich habe Oracle-Daten wie folgt aus:Lesen von Daten aus allen Reihen von Oracle und Anzeige in Textbox mit C#

enter image description here

Die Tabelle gestattet KETERANGAN und ich möchte diese Daten in textBox1. Nicht nur eine Zeile, sondern alle Zeilen. Das ist mein Code verwendet OracleDataReader

OracleCommand cmd = new OracleCommand(); 
OracleDataReader dr; 
cmd.CommandText = @"SELECT NOTES FROM KETERANGAN"; 
cmd.Connection = koneksidb.con; 
dr = cmd.ExecuteReader(); 
while (dr.Read()) 
{ 
    textBox1.Text = dr["NOTES"].toString(); 
} 
dr.Close(); 

ich: Du bist cool.

Ich möchte: Du bist cool, Erstaunlich, Wonderful

Antwort

1

Verwendung += statt =, die das Ergebnis anhängen wird. Sie ersetzen es gerade.

OracleCommand cmd = new OracleCommand(); 
OracleDataReader dr; 
cmd.CommandText = @"SELECT NOTES FROM KETERANGAN"; 
cmd.Connection = koneksidb.con; 
dr = cmd.ExecuteReader(); 
while (dr.Read()) 
{ 
    textBox1.Text += dr["NOTES"].toString() + ","; 
} 
dr.Close(); 
+0

ja, du hast Recht. nur hinzufügen + und es lösen, ich stelle es nie genau so einfach, .. vielen dank – aminvincent

1

Oder Sie können die Multiline Eigentum auf Ihrer Textbox auf true gesetzt und verwenden

textBox1.Lines.Add(dr["NOTES"].toString()); 
+0

danke für ihre vorschlagen, aber ich habe es zu lösen, indem + in meinem code wie antwort vorschlagen, dass ich gewählt haben – aminvincent

1

Es ist wie dies geschehen könnte:

// wrap IDisposable into using 
    using (OracleCommand cmd = new OracleCommand()) { 
    cmd.Connection = koneksidb.con; 

    // Make SQL readable 
    cmd.CommandText = 
     @"SELECT Notes 
      FROM Keterangan"; 

    // wrap IDisposable into using; do not close manually - dr.Close() 
    using (OracleDataReader dr = cmd.ExecuteReader()) { 
     // do not append string in loop - use SringBuilder 
     StringBuilder sb = new StringBuilder(); 

     while (dr.Read()) { 
     if (sb.Length > 0) // <- do not put delimiter before the very first item 
      sb.Append(", "); // <- do you want a delimiter? Say, comma? 

     // ".ToString()" provides debug info, use Convert.ToString() instead 
     sb.Append(Convert.ToString(dr.GetValue(0))); 
     } 

     // Assign data once in order to prevent re-painting (and blinking) 
     textBox1.Text = sb.ToString(); 
    } 
    } 

Hoffnung, die Kommentare in der Routine erklären der Code genug.

+0

danke für ihre vorschlagen, aber Ich habe es gelöst, indem ich + in meinem Code wie suggerant antwort hinzugefügt habe, dass ich – aminvincent

+0

@aminvincent gewählt habe: wickle mindestens 'IDisposable' in' using' in deiner Lösung :) sonst hast du * Ressourcenverlust *. –

1

Sicher und optimierte Lösung ...

var notesBuilder = new StringBuilder(); 

const string SQL = @"SELECT NOTES FROM KETERANGAN"; 
using (var cmd = new OracleCommand(SQL, koneksidb.con)) 
{ 
    using (OracleDataReader dr = cmd.ExecuteReader()) 
    { 
    while (dr.Read()) 
    { 
     notesBuilder.Append(dr["NOTES"]); 
     notesBuilder.AppendLine(","); 
    } 
    } 
} 

textBox1.Text = notesBuilder.ToString(); 
+0

danke für Ihren Vorschlag, aber ich habe es gelöst, indem + in meinem Code wie vorschlagen Antwort, die ich habe gewählt – aminvincent

+0

@aminvincent Wenn Ihre Tabelle hat viele Zeilen, haben Sie möglicherweise ein Leistungsproblem mit + mit Zeichenfolgen (die eine neue Zeichenfolge neu erstellt Instanz für jede Verkettung) –

+0

Ich werde zuerst für Ihren Code oben versuchen, .. wenn es für viele Daten erfolgreich ist, werde ich es verwenden. Danke, dass Sie es vorschlagen – aminvincent