从表中检索行会导致无效的列名错误

时间:2018-09-01 17:15:13

标签: c# sql sql-server

我正在尝试删除数据库表中的一条记录。我正在尝试根据下拉列表中的选定名称将其删除。当我调试代码时,数据集中没有可用的记录,并且发生异常“无效的列名”,但是如果我在SQL Server中运行相同的查询,一切似乎都很好。

这是我的代码:

created

这是我在SQL Server 2014中运行该查询时的查询;一切正常:

selectJobs

2 个答案:

答案 0 :(得分:0)

如果使用c#版本> = 6.0

您可以使用插值以非常方便且不易出错的方式连接字符串。

 var adpt = new SqlDataAdapter($"Select * from tc_prod_subcategory where subcategory_name = '{DropDownList2.SelectedItem.Value}'", conn);

答案 1 :(得分:0)

该错误是由于where子句中使徒的位置不正确引起的。应该是这样的:

"Select * from tc_prod_subcategory where subcategory_name = '" + DropDownList2.SelectedItem.Value + "'"

但是该代码容易受到SQL injection的攻击,因此您应该使用参数而不是连接字符串。

var conn = new SqlConnection(@"Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=|DataDirectory|\template_castle.mdf;Integrated Security=True");
var adpt = new SqlDataAdapter("Select * from tc_prod_subcategory where subcategory_name = @subcategory_name", conn);
var ds = new DataSet();

adpt.SelectCommand.Parameters.AddWithValue("@subcategory_name", DropDownList2.SelectedItem.Value);