2016-11-15 112 views
2

我如何從數據庫讀取記錄並可以插入到DataGridView中。我不想綁定數據源。只想使用While循環讀取和插入。我知道如何從數據庫中讀取Sql Server 2008 R2 Express Edition但是無法在Datagridview中插入記錄。從數據庫中讀取並插入到DataGridView中

任何人都可以幫助我嗎?

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"); 
} 

我期待這樣的事情。

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

您是否嘗試過寫什麼去了'if'語句裏面?可能重複[此帖子。](http://stackoverflow.com/questions/6584817/direct-method-from-sql-command-text-to-dataset) – Hank

+0

[直接方法從SQL命令文本到DataSet的可能重複(http://stackoverflow.com/questions/6584817/direct-method-from-sql-command-text-to-dataset) – Hank

回答

1

就是這樣。

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; 

希望它可以幫助

+0

我不想與數據源綁定。因爲它使更新過程複雜 –

1

可以從SqlDataReader這樣得到DataTable

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

比你可以設置GridView的來源是這樣的:

dataGridView1.DataSource = dataTable; 
+0

感謝您的幫助。但我尋找的東西就像我的編輯崗位 –

+0

這工作,但我現在面臨的問題是,在結果表格的列名是我們在數據庫中使用的,這是一種*生*並沒有真正用戶友善。如何在加載數據期間使用自定義列名而不必在列中填寫每一列? –

1

其很容易,我希望,這是你在找什麼。

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

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

希望它肯定有幫助,請讓我知道如果您需要進一步澄清或懷疑。

感謝 KARTHIK

+0

感謝您的幫助。但我正在尋找類似於我編輯的帖子中的內容 –

0

謝謝大家,

謝謝您的答覆。我通過改變AllowUserToAddRows物業True和修改一些代碼,以及這樣的結果..

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++; 
    } 
相關問題