插入代码错误

时间:2018-05-22 05:25:28

标签: c# sql .net sql-server-2008

insert into customer (Advance,status)
values(@Advance,@status)
where Name='" + txtcname.Text.Trim() + "'";

在上面的插入语句中,将根据条件插入2个值,但我在where条件中收到错误...

  

关键字

附近的语法不正确

这是错误

3 个答案:

答案 0 :(得分:4)

插入查询不需要Where子句。只需写下

insert into customer (Advance, status) values(@Advance, @status)

您是要插入还是更新?如果您需要更新现有记录,请使用更新而不是像这样插入:

update customer set Advance=@Advance, status=@status 
where Name='" + txtcname.Text.Trim() + "'";

修改

上述更新查询将用于此目的,但建议使用存储过程/参数化查询来实现SQL注入安全性。您应该遵循使用方法:

Private void UpdateRecord(string advance,string status, string name)
{
//SqlConnection con
SqlCommand cmdUpdate = new SqlCommand("update customer set Advance = @Advance, status = @Status where Name=@Name", con);
            cmdUpdate.Parameters.AddWithValue("@Advance", advance);
            cmdUpdate.Parameters.AddWithValue("@Status", status);            
            cmdUpdate.Parameters.AddWithValue("@name", name);
            cmdUpdate.ExecuteNonQuery();

}

将您的数据传递如下:

UpdateRecord(@Advance,@Status,txtcname.Text.Trim());

答案 1 :(得分:0)

您无法使用'其中'在insert语句中。 要获得相同的结果,您可以插入所有条目并删除错误。

您可以在插入后使用select语句,从中选择从表到另一个表的条目。这对你来说也是一个解决方案。

Insert into customer (advance, status) values (...)
select advance, status
from anotherCustomerTable
where ... 

P.S。尝试准备where-part。

答案 2 :(得分:0)

您不能在where子句中添加值。您可以通过以下方式实现此目的 如果你真的想插入新行,你可以按照@Munawar解决方案

insert into customer (Advance, status)

SELECT @Advance,@status
FROM  customer where Name='" + txtcname.Text.Trim() + "'"