Поля Member_Id и Status также есть в таблице Test_Employee ? Вы можете добавить их в свой оператор Select и получить их из своего SqlReader , как показано в коде ниже (при условии, что вы используете c # 7 и ниже). Вы можете скопировать и вставить этот код.
var connectionString = "";
var sql = @"SELECT TOP 1 Name, Member_Id, Status
FROM Test_Employee
WHERE Name LIKE @name + '%'";
using (var connection = new SqlConnection(connectionString))
using (var command = new SqlCommand(sql, connection))
{
command.Parameters.Add("name", SqlDbType.NVarChar, 100).Value = textBox1.Text.ToString();
connection.Open();
var reader = command.ExecuteReader();
if (reader.Read())
{
textBox9.Text = dataReader["Name"].ToString();
textBox7.Text = dataReader["Name"].ToString();
textBox2.Text = dataReader["Member_Id"].ToString();
textBox3.Text = dataReader["Status"].ToString();
}
}
Вы заметите, что вместо включения значения Textbox1.Text в ваш оператор Select он добавляется в качестве параметра в объект * SQLCommand . Parameters
. Таким образом, ваш запрос защищен от SQL Injection . Если вы хотите узнать больше, вы можете выполнить поиск c # sqlcommand параметры и узнать, почему так важно создать код доступа к данным.
Кроме того, обратите внимание, что я добавил Top 1
в вашВыберите оператор, и вместо while
я использую if
. Это потому, что текстовое поле может содержать только 1 результат за один раз в доступной форме. Если вы хотели четко показать несколько результатов, вам нужно использовать другой элемент управления, отличный от TextBox.
Операторы using
позволяют вам избавиться от соединения, поэтому вам не нужно вызывать connection.Close()
.