C #: запрос нескольких столбцов в текстовые поля - PullRequest
0 голосов
/ 08 ноября 2019

Это мой код, и я хочу иметь возможность искать имя, а затем извлекать из базы данных имя, статус, member_id в текстовые поля в моей форме.

Я получил имя дляработать, но как мне получить другие столбцы и проанализировать вывод в текстовые поля с дополнительными столбцами (member_id, status)? Допустим, другие текстовые поля имеют стандартное имя, например textbox2, 3, 4 ...

string connetionString = null;
SqlConnection connection;
SqlCommand command;

string sql = null;
string sql1 = null;

SqlDataReader dataReader;

connetionString = "Data Source=......"
sql = "SELECT NAME FROM Test_Employee WHERE Name LIKE '" + textBox1.Text.ToString() + "%'";
connection = new SqlConnection(connetionString);
{
    connection.Open();

    command = new SqlCommand(sql, connection);
    dataReader = command.ExecuteReader();

    while (dataReader.Read())
    {
        textBox9.Text = dataReader[0].ToString();
        textBox7.Text = dataReader[0].ToString();
    }

    connection.Close();
}

1 Ответ

0 голосов
/ 08 ноября 2019

Поля 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().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...