2014-11-14 3 views
0

Мне не хватает чего-то очень простого. У меня есть форма с 5 textBox и хочу заполнить их данными из базы данных SQL Server. Вот что у меня есть до сих пор:Как разместить данные из базы данных SQL Server в TextBox?

Когда я отлаживаю этот код по строкам, он возвращается в вызывающий блок по линии connection.open().

public void Get_Contact_Info() 
{ 
    using (DataAccessClass.sql_Connection) 
    { 
     string SQL = "SELECT * FROM Customer_Contacts WHERE Contact_ID = @contact_Id"; 
     SqlCommand sqlCommand = new SqlCommand(SQL, DataAccessClass.sql_Connection); 

     sqlCommand.Parameters.AddWithValue("@Contact_Id", contact_Id); 
     sqlCommand.Parameters.AddWithValue("@Contact_Direct_Number", contact_Direct_NumberTextBox); 
     sqlCommand.Parameters.AddWithValue("@Contact_Cell_Number", contact_Cell_NumberTextBox); 
     sqlCommand.Parameters.AddWithValue("@Contact_Email", contact_EmailTextBox); 
     sqlCommand.Parameters.AddWithValue("@Contact_Department", contact_DepartmentTextBox); 

     DataAccessClass.sql_Connection.Open(); 

     using (SqlDataReader sqlDataReader = sqlCommand.ExecuteReader()) 
     { 
      while (sqlDataReader.Read()) 
      { 
       contact_Id = sqlDataReader["Contact_ID"].ToString(); 
      } 
     DataAccessClass.sql_Connection.Close(); 
     } 
    } 
} 

Я делал довольно хорошую работу получать информацию от пользователя и сохранить его в SQL Server DataTable, но знаю, что я хочу, чтобы получить некоторые из так что я могу редактировать информацию.

Любая помощь будет с благодарностью оценена.

Вот мой DataAccessClass

public static class DataAccessClass 
    { 
     static SqlConnection sqlConnection = new SqlConnection(); 

     public static SqlConnection sql_Connection 
     { 
      get { return sqlConnection; } 
     } 

     public static void OpenConnection() 
     { 
      string sqlString = Properties.Settings.Default.ConnectionString; 
      sqlConnection.ConnectionString = sqlString; 
      sqlConnection.Open(); 
     } 

     public static void CloseConnection() 
     { 
      sqlConnection.Close(); 
     } 
    } 

Вот как я звоню Get_Contact_Info.

private void Customer_Add_Contact_Form_Load(object sender, EventArgs e) 
    { 
     this.customer_ContactsBindingSource.AddNew(); 
     if (contact_Id == null) 
     { 
      contact_NameTextBox.Select(); 
     } 
     else 
     { 
      Get_Contact_Info(); 
     } 
    } 

С DataGridView я выбор строки и передачи customer_id к Customer_Add_Contact_Form, так что я могу изменить контактную информацию. Вот код для этого шага:

DataGridViewRow row = customer_ContactsDataGridView.CurrentCell.OwningRow; 
string contact_ID = row.Cells[0].Value.ToString(); 
string customer_Ship_ID = null; 

using (Form Customer_Add_Contact_Form = new Customer_Add_Contact_Form(customer_Ship_ID, contact_ID)) 
+1

У вас уже есть ваш запрос, и вы перебираете записи, возвращенные из вашей базы данных. Похоже, вам просто нужно включить некоторый код в цикл while, который вставляет данные в правильные элементы управления. –

+0

Можете ли вы показать, как объявлен и создан «DataAccessClass.sql_Connection»? – JleruOHeP

+0

Я добавил класс подключения. –

ответ

1

Как обсуждалось here это лучше, чтобы пул соединений управлять соединениями, так что вы можете упростить ваш код:

public void Get_Contact_Info() 
{ 
    using (var connection = new SqlConnection(roperties.Settings.Default.ConnectionString)) 
    { 
     connection.Open(); 

     var SQL = "SELECT * FROM Customer_Contacts WHERE Contact_ID = @contact_Id"; 

     var sqlCommand = new SqlCommand(SQL, connection); 
     sqlCommand.Parameters.AddWithValue("@Contact_Id", contact_Id); 

     using (var sqlDataReader = sqlCommand.ExecuteReader()) 
     { 
      while (sqlDataReader.Read()) 
      { 
       contact_Id = sqlDataReader["Contact_ID"].ToString(); 

       TextBoxName.Text = sqlDataReader["Contact_Name"].ToString(); 
       //etc ... 
      } 
     } 
    } 
} 

я удалил неиспользованные параметры и создано новое соединение. Возможно, вы попытались открыть соединение с помощью .Open() без инициализации его строкой соединений (это roperties?)

+0

Я работал с моими подключениями, как вы предлагаете, но читал сообщение, которое убеждало меня в другом. Я могу легко переключиться назад. Моя строка подключения действительно 'Свойства'. Я попробую этот код и дам вам знать, где я в итоге. –

+0

Как только я нахожусь в строке connection.open, он переходит прямо к 'form' и его пробелу, потому что' dataReader' пропускается, и я не могу понять, почему. –

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