2016-05-09 8 views
0

ich diesen Code-Schnipsel habenLeser lesen mehrere in einer Verbindung C#

using (SqlConnection connection = new SqlConnection(Properties.Settings.Default.WPC_AppConnectionString)) 
using (var command = connection.CreateCommand()) 
{ 
    command.CommandText = "SELECT engid,shop_order,hours_,work_date FROM engineer WHERE entry_=" + textBox2.Text.ToString(); 
    connection.Open(); 
    using (var reader = command.ExecuteReader()) 
    { 
     while (reader.Read()) 
     textBox4.Text = reader["engid"].ToString(); 
     textBox6.Text = reader["shop_order"].ToString(); 
     textBox8.Text = reader["hours_"].ToString(); 
     dateTimePicker3.Value = Convert.ToDateTime(reader["work_date"].ToString()); 
    } 
} 

Wenn ich laufe dies seine nehme eine textBox verwenden entry_ zu erhalten (in diesem Fall 3 können sagen) Dann wählen Sie die Spalten aus meiner sql Tisch und füllen sie die anderen Textfelder, um es mit

System.InvalidOperationException occurred 
    HResult=-2146233079 
    Message=Invalid attempt to read when no data is present. 
    Source=System.Data 
    StackTrace: 
     at System.Data.SqlClient.SqlDataReader.CheckDataIsReady(Int32  columnIndex, Boolean allowPartiallyReadColumn, Boolean permitAsync, String methodName) 
    InnerException: 

stürzt es funktioniert gut, wenn ich jeden, um seine eigene sQL-Verbindung trennen, aber ich habe mich gefragt, ob ich in eine kombinieren.

meine Tabelle sieht wie entry_ | aus 3 engid | NAME shop_order | NUMMERN Stunden_ | 1 work_date | 01/01/0001

Ich bin ziemlich neu in C# und ich habe einige Nachforschungen gemacht, aber konnte nicht ganz das finden.

Antwort

1

Umgeben Sie Ihre while-Anweisung mit geschweiften Klammern.

weil in Ihrem Fall while-Schleife nur die erste Zeile und wenn while-Schleife endet die anderen Zeilen ausgeführt werden. So tritt die Ausnahme auf.

+0

Wow .... Das hat funktioniert danke danke, ich hätte mir das besser ansehen sollen ... danke jack –