2015-05-29 2 views
2

Я использую Visual Studio 2013 с SQL Server 2012 для базы данных в приложении Windows Forms C#.Отображение результатов поиска базы данных в Datagridview

Я хочу, чтобы показать мои результаты поиска запрос в DataGridView:

public void customerSearch(int custID, DataGridView dataGridView) 
{ 
     try 
     { 
      SqlConnection connection = new SqlConnection(@"Connection String"); 
      connection.Open(); 

      SqlCommand searchQuery = new SqlCommand("select * from [Customer] where custId = @custID", connection); 
      searchQuery.Parameters.AddWithValue("@custId", custID); 
      //searchQuery.ExecuteNonQuery(); 

      using (SqlDataReader reader = searchQuery.ExecuteReader()) 
      { 
       while (reader.Read()) 
       { 
        dataGridView.DataBindings.ToString(); 
       } 
      } 
     } 
     catch (SqlException Exception) 
     { 
      MessageBox.Show(Exception.ToString()); 
     } 
     finally 
     { 
      connection.Close(); 
     } 
    } 
} 

Я получил NullReferenceException в connection.Close(); Любая помощь будет оценена.

+0

Или любой другой способ для этой цели? –

+0

На самом деле я удаляю строку подключения перед публикацией. Нет проблемы с строкой подключения, поскольку я правильно ее дал @KhairulIslam –

+0

Вы должны поместить свое соединение в свой app.config вместо того, чтобы его кодировать в вашей форме. –

ответ

4

Когда вы устанавливаете свое соединение в USING, он автоматически закрывает и удаляет ваше соединение, когда блок выходит.

public void customerSearch(int custID, DataGridView dataGridView) 
     { 
      using (SqlConnection connection = new SqlConnection(ConfigurationManager.ConnectionStrings["MyConnectionString"].ConnectionString)) 
      { 
       try 
       { 

        connection.Open(); 

        SqlCommand searchQuery = new SqlCommand("select * from [Customer] where custId = @custID", connection); 
        searchQuery.Parameters.Add("@custId", SqlDbType.Int).Value = custID; 
        //searchQuery.ExecuteNonQuery(); 

        using (SqlDataReader reader = searchQuery.ExecuteReader()) 
        { 
         DataTable dt = new DataTable(); 
         dt.Load(reader); 
         dataGridView.AutoGenerateColumns = true; 
         dataGridView.DataSource = dt; 
         dataGridView.Refresh(); 
        } 
       } 
       catch (SqlException Exception) 
       { 
        MessageBox.Show(Exception.ToString()); 
       } 
      } 
     } 

--EDIT--

Вы не можете связать DataGridView к DataReader. Я отредактировал код выше, чтобы продемонстрировать один из способов сделать это. Я просто создаю DataTable от вашего читателя и привязываю сетку к DataTable.

+0

Не уверен, что вы делаете с DataBindings.ToString, если быть честным. Вы пытаетесь привязать сетку к читателю? –

+0

Да, своего рода. На самом деле я хочу показать результат запроса в «DataGridView». –

+0

ОК. Теперь я понимаю, чего вы хотите. Я отредактировал код, чтобы продемонстрировать один из способов сделать это. –

Смежные вопросы