使用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!");
}
}
它总是失败,甚至无法做到这一点。。。。
错误在的这行代码中
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);
- 您没有在SELECT中选择任何列或表达式
- 你的单引号和双引号在串联中是向后的
- 您应该养成使用参数而不是串联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);