Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用SqlDataReader填充多个文本框_C#_Sql_Sqldatareader - Fatal编程技术网

C# 使用SqlDataReader填充多个文本框

C# 使用SqlDataReader填充多个文本框,c#,sql,sqldatareader,C#,Sql,Sqldatareader,我正在尝试使用我的数据库信息填充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 List

我正在尝试使用我的数据库信息填充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!");
    }
}

它总是失败,甚至不能正确地完成这项任务。…

首要任务是正确地写下这一行:

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);
这是很基本的东西。你应该花些时间阅读一两篇教程

完成后,您需要从数据读取器中实际读取数据。我可以帮忙。注意在这些示例中使用参数而不是字符串连接?你可以了解更多

您没有在SELECT中选择任何列或表达式 单引号和双引号在连接中向后 您应该养成使用参数而不是连接SQL的习惯,这有几个原因,其中一个原因是SQL注入漏洞 有效的声明是:

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 * FROM Lista1 WHERE DescripcionNombre = '" + comboBox1.text + """, CN);
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 * FROM Lista1 WHERE DescripcionNombre = '" + comboBox1.text + "'", CN);

欢迎来到StackOverflow。请更详细地说明它是如何失败的,包括发布完整的堆栈跟踪。您是否能够通过命令提示符或GUI界面程序访问数据库?选择*或选择
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);