2016-11-15 3 views
2

Как я могу читать записи из базы данных и вставлять их в DataGridView. Я не хочу связывать источник данных. Просто хотите прочитать и вставить с помощью цикла While Loop. Я знаю, как читать из базы данных 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

Я не хочу связывать его с источником данных. coz он делает процесс процесса обновления –

1

Вы можете получить DataTable из SqlDataReader, как это:

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

Чем вы можете установить источник GridViews так:

dataGridView1.DataSource = dataTable; 
+0

Спасибо за помощь ур. Но я ищу что-то, как в моем отредактированном сообщении –

+0

Это работает, но проблема, с которой я столкнулся, заключается в том, что имена столбцов в сетке результатов - это те, которые мы используем в БД, который является своего рода * raw * и не действительно пользовательским, дружелюбный. Как можно использовать собственные имена столбцов без необходимости адресации каждого столбца во время загрузки данных? –

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++; 
    } 
Смежные вопросы