使用SqlDataReader填充多个文本框

本文关键字:文本 SqlDataReader 填充 使用 | 更新日期: 2023-09-27 18:01:29

我正在尝试使用数据库信息填充11个文本框。

private void button5_Click(object sender, EventArgs e)
{
    SqlConnection CN = new SqlConnection();
    CN.ConnectionString = cons;
    try
    {
        CN.Open();
        SqlCommand cmd = new SqlCommand("SELECT  FROM Lista1 WHERE DescripcionNombre = "
        ' + comboBox1.text + '
        "",
        CN)
        ;
        SqlDataReader myReader = cmd.ExecuteReader();
    }
    catch
    {
        MessageBox.Show("You failed!");
    }
}

它总是失败,甚至无法做到这一点。。。。

使用SqlDataReader填充多个文本框

错误在的这行代码中

SqlCommand cmd = new SqlCommand("SELECT  FROM Lista1 WHERE DescripcionNombre = "' + comboBox1.text + '"", CN);

它应该像这个一样

SqlCommand cmd = new SqlCommand("SELECT * FROM Lista1 WHERE DescripcionNombre = '" + comboBox1.text + """, CN);

SqlCommand cmd = new SqlCommand("SELECT Column1_name, column2_name FROM Lista1 WHERE DescripcionNombre = '" + comboBox1.text + "'", CN);

由于您没有选择任何列,因此它没有按预期工作。

在旁注中,传递参数值,而不是直接从字段值中传递值。这样就可以避免SQL注入

SqlCommand cmd = new SqlCommand("SELECT Column1_name, column2_name FROM Lista1 WHERE DescripcionNombre = @DescripcionNombre", CN);
cmd.Parameters.AddWithValue("@DescripcionNombre", comboBox1.text);

业务的第一步是正确地写下这一行:

SqlCommand cmd = new SqlCommand("SELECT  FROM Lista1 WHERE DescripcionNombre = "' + comboBox1.text + '"", CN);

这不是有效的SQL或C#。您需要指定要从表中检索的列。如果需要所有列,则使用通配符。接下来的任务是学习如何连接字符串。如果你想让单引号成为字符串文字的一部分,那么它们必须在双引号内。

SqlCommand cmd = new SqlCommand("SELECT * FROM Lista1 WHERE DescripcionNombre = '" + comboBox1.text + "'", CN);

这是相当初级的东西。你应该花点时间读一两本教程。

一旦完成,您就需要从数据读取器中实际读取数据。这可以帮助解决这个问题。注意那些例子中使用的是参数而不是字符串串接吗?你可以在这里了解更多。

SqlCommand cmd = new SqlCommand("SELECT  FROM Lista1 WHERE DescripcionNombre = "' + comboBox1.text + '"", CN);
  1. 您没有在SELECT中选择任何列或表达式
  2. 你的单引号和双引号在串联中是向后的
  3. 您应该养成使用参数而不是串联SQL的习惯(原因有很多,尤其是SQL注入漏洞(

有效的语句为:

SqlCommand cmd = new SqlCommand("SELECT * FROM Lista1 WHERE DescripcionNombre = '"
                               + comboBox1.text 
                               + "'", CN);

您忘记了在查询中提及需要获取的列名

始终使用参数化查询SQLParameter如何防止SQL注入

SqlCommand cmd = new SqlCommand("SELECT * FROM Lista1 WHERE DescripcionNombre=@DescripcionNombre, CN);
cmd.Parameters.AddWithValue("@DescripcionNombre", comboBox1.text);

但是你的查询应该是这样的

SqlCommand cmd = new SqlCommand("SELECT * FROM Lista1 WHERE DescripcionNombre = '" + comboBox1.text + "'", CN);