Я хотел бы найти запись через текстовое поле с помощью кнопки сохранения и отобразить искомые данные в других текстовых полях, и я хочу, чтобы искомая строка была выбрана в сетке данных. Мне удалось решить оба кода. но я не мог смешать 2 кода и сделать его 1. извините за мой плохой английский в любом случае вот мои два кода

//shows searched row in datagridview but does not show in textboxes             
SqlCommand cmd = sqlCon.CreateCommand();
        cmd.CommandType = CommandType.Text;
        cmd.CommandText = "select * from cabphase1 where CODENO='"+txtTNo.Text+"'";
        cmd.ExecuteNonQuery();
        DataTable dt = new DataTable();
        SqlDataAdapter da = new SqlDataAdapter(cmd);
        da.Fill(dt);

        dataGridView1.DataSource = dt;
        sqlCon.Close();


       //2nd code: Shows in textbox but not in datagridview
       try
        {
            SqlCommand cmd = new SqlCommand("Select * from cabphase1 where CODENO = '" + txtCODENOAT.Text + "'", sqlCon);
            SqlDataReader dr = cmd.ExecuteReader();


            if (dr.Read())
            {
                txtDNAMEAT.Text = dr[0].ToString();
                txtLNOAT.Text = dr[1].ToString();

            }
            else
            {
                MessageBox.Show("Enter a valid Taxi CODENO - Eg: 31", "FAILED", MessageBoxButtons.OK, MessageBoxIcon.Error);

            }


            dr.Close();
        }
        catch (Exception ex)
        {
            MessageBox.Show("Error Searching Data" , "Dispatch", MessageBoxButtons.OK, MessageBoxIcon.Error);
        }
c#
0
HaramHoe 10 Фев 2021 в 05:27

1 ответ

Лучший ответ

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

Также не следует использовать конкатенацию строк для генерации SQL-запросов в коде. Это подвержено SQL-инъекциям. Настоятельно рекомендуется использовать параметризованные запросы для защиты от SQL-инъекций.

В следующем коде используется параметризованный запрос.

//shows searched row in datagridview but does not show in textboxes             
SqlCommand cmd = sqlCon.CreateCommand();
cmd.CommandType = CommandType.Text;
cmd.CommandText = "select * from cabphase1 where CODENO = @codeno";
SqlParameter parameter = new SqlParameter("@codeno", System.Data.SqlDbType.NVarChar);
parameter.Value = txtTNo.Text;
cmd.Parameters.Add(parameter);

DataTable dt = new DataTable();
SqlDataAdapter da = new SqlDataAdapter(cmd);
da.Fill(dt);

dataGridView1.DataSource = dt;
sqlCon.Close();

if(dt.Rows.Count > 0)
{
    DataRow row = dt.Rows[0];
    
    txtDNAMEAT.Text = row[0].ToString();
    txtLNOAT.Text = row[1].ToString();
}

Надеюсь, это поможет вам решить вашу проблему.

0
Chetan Ranpariya 10 Фев 2021 в 03:06