我正在尝试使用我的数据库信息填充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!");
}
}
总是失败,甚至无法做到这一点......
答案 0 :(得分:2)
错误出现在这行代码中
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 Injection
SqlCommand cmd = new SqlCommand("SELECT Column1_name, column2_name FROM Lista1 WHERE DescripcionNombre = @DescripcionNombre", CN);
cmd.Parameters.AddWithValue("@DescripcionNombre", comboBox1.text);
答案 1 :(得分:1)
第一项业务是正确编写此行:
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);
这是非常基本的东西。你应该花些时间阅读一两个教程。
完成后,您需要实际读取数据读取器中的数据。 This可以帮助解决这个问题。注意在这些示例中使用参数而不是字符串连接?您可以详细了解here。
答案 2 :(得分:1)
SqlCommand cmd = new SqlCommand("SELECT FROM Lista1 WHERE DescripcionNombre = "' + comboBox1.text + '"", CN);
有效语句将是:
SqlCommand cmd = new SqlCommand("SELECT * FROM Lista1 WHERE DescripcionNombre = '"
+ comboBox1.text
+ "'", CN);
答案 3 :(得分:1)
您忘记提及需要在查询中获取的列名
始终使用参数化查询How does SQLParameter prevent SQL Injection
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);