下面是一个插入语句,它将第一个值(acctNum)
输入第二列(itemCode)
,反之亦然:
string addUpcCode = "INSERT INTO compare1 (acct, itemcode)"
+ "VALUES ('"+acctNum+"', '"+itemCode+"')";
这不是我希望它工作的方式,因为我希望第一列中的第一个值和第二列中的第二个值。我怎么能这样做呢?
旁注:这是一个粗略的草案,直到我了解有关参数化的更多信息。在学习和实现之前,我不会发布此代码。
答案 0 :(得分:1)
您应该使用SQL参数,这也可以避免创建SQL注入问题:
using (SqlCommand command = new SqlCommand("INSERT INTO compare1 (acct, itemcode) VALUES (@AcctNum, @ItemCode)", connection))
{
// Add new SqlParameter to the command.
command.Parameters.Add(new SqlParameter("AcctNum", acctNum));
command.Parameters.Add(new SqlParameter("ItemCode", itemCode));
答案 1 :(得分:1)
给定的SQL snipplet将执行您想要的操作 - 尤其是将保留列的序列。
我怀疑你可能已经改变了你的变量,导致了同样的现象,但出于其他原因。
答案 2 :(得分:0)
当你使用C#时,string.format函数非常适合这种事情
string.format("INSERT INTO compare1(acct, itemCode) Values('{0}','{1}'", acctNum, itemCode);
或
string.format("INSERT INTO compare1 SELECT '{0}','{1}' ", acctNum, itemCode);
但是,是的,你可能会把它们混在其他地方,订单会被保留。哦,如果acctNum是一个整数,你不需要{0}
周围的引号编辑: 哦,是的,一定要查看下一个参数
答案 3 :(得分:0)
使用参数化查询来阻止SQL注入,您可以解决此问题
command.Parameters.Add("AcctNum", acctNum);