2016-11-15 2 views
2

Wie kann ich Datensätze aus der Datenbank lesen und einfügen in DataGridView. Ich möchte die Datenquelle nicht binden. Ich möchte nur mit While-Schleife lesen und einfügen. Ich weiß, wie man aus der Datenbank liest Sql Server 2008 R2 Express Edition Aber keine Datensätze in Datagridview einfügen.Aus der Datenbank lesen und in DataGridView einfügen

Kann mir bitte jemand helfen?

string query = "Select id, IdNo, status From Members Where [email protected]"; 

sqlCommand = new SqlCommand(query, sqlConnection); 
sqlConnection.Open(); 
sqlCommand.Parameters.AddWithValue("@Head", familyMemberId); 
sqlDataReader = sqlCommand.ExecuteReader(); 

if (sqlDataReader.HasRows) 
    { 
     //What to write here while my DataGridView Name is ufGView and it has 
     //4 column. Names are Id, IdNo{TextBox}, Status{CheckBox}, Action{HyperLink} 
    } 
} 
catch (Exception exp) 
{ 
      MessageBox.Show(exp.Message.ToString(), "Exception in CheckFamilyMembers"); 
} 

Ich bin auf der Suche nach so etwas.

int i = 0; 
      while (sqlDataReader.Read()) 
      { 
       ufGview.Rows[i].Cells["Column3"].Value = sqlDataReader["id"].ToString(); 
       ufGview.Rows[i].Cells["Column1"].Value = sqlDataReader["IdNo"].ToString(); 
       ufGview.Rows[i].Cells["Column2"].Value = sqlDataReader["status"].ToString(); 

       i++; 
      } 
+0

Haben Sie versucht, etwas zu schreiben Innenseite der 'if' Anweisung zu gehen? Mögliches Duplikat von [dieser Beitrag.] (Http://stackoverflow.com/questions/6584817/direct-method-from-sql-command-text-to-dataset) – Hank

+0

Mögliches Duplikat von [Direkte Methode von SQL-Befehlstext zu DataSet ] (http://stackoverflow.com/questions/6584817/direct-method-from-sql-command-text-to-dataset) – Hank

Antwort

1

Ist so etwas.

DataTable dt = new DataTable(); 
DataRow dr = new DataRow(); 

While sqlDataReader.Read(){ 
dr = dt.newRow(); 
dr["Id"] = sqlDataRead.item["id"]; 
. 
. 
. 
dt.rows.add(dr); 
} 

DataGridView.datasource = dt; 

Hoffe, dass es

+0

Ich möchte nicht mit Datenquelle zu binden. coz, es macht Update-Prozess komplex –

1

hilft Ihnen, eine DataTable von einem SqlDataReader wie diese zu bekommen:

using (var sqlDataReader = sqlCommand.ExecuteReader()) 
{ 
    var dataTable = new DataTable(); 
    dataTable.Load(sqlDataReader); 
    return dataTable; 
} 

als Sie die Gridviews Quelle wie folgt eingestellt:

dataGridView1.DataSource = dataTable; 
+0

Danke für Ihre Hilfe. Aber ich suche nach etwas wie in meinem bearbeiteten Post –

+0

Das funktioniert, aber das Problem, dem ich gegenüberstehe, ist, dass die Spaltennamen im Ergebnisraster diejenigen sind, die wir in der DB verwenden, die irgendwie * rohe * und nicht wirklich Benutzer- freundlich. Wie kann man benutzerdefinierte Spaltennamen verwenden, ohne beim Laden der Daten jede einzelne Spalte ansprechen zu müssen? –

1

Seine Ziemlich einfach und ich hoffe, das, was Sie suchen.

if (sqlDataReader.HasRows) 
    { 
      DataTable schemaTable = reader.GetSchemaTable(); 
      foreach (DataRow currentrow in schemaTable.Rows) 
      { 

       ufgView.rows.add(currentrow) // gridviewname as per your comment 
      } 
    } 

hoffe, es hilft sicherlich, lassen Sie es mich wissen, wenn Sie weitere Erläuterungen oder Zweifel benötigen.

dank karthik

+0

Danke für deine Hilfe. Aber ich suche etwas in meinem editierten Post –

0

Dank Jeder,

Vielen Dank für Ihre Antworten. Ich habe führen durch Ändern AllowUserToAddRows Eigentum zu True und einige Code als auch wie diese zu modifizieren ..

for (int i = 1; i <= TOTALMEMBERS; i++) 
    { 
     string[] row = new string[] { i.ToString() }; 
     ufGview.Rows.Add(row); 
    } 

    int ji = 0; 

    while (sqlDataReader.Read()) 
    { 
     ufGview.Rows[ji].Cells["Column3"].Value = sqlDataReader["id"].ToString(); 
     ufGview.Rows[ji].Cells["Column1"].Value = sqlDataReader["IdNo"].ToString(); 
     ufGview.Rows[ji].Cells["Column2"].Value = sqlDataReader["status"].ToString(); 

     ji++; 
    } 
Verwandte Themen