0

下面是一个插入语句,它将第一个值输入(acctNum)到第二列(itemCode),反之亦然:

string addUpcCode = "INSERT INTO compare1 (acct, itemcode)"
                    + "VALUES ('"+acctNum+"', '"+itemCode+"')";

这不是我希望它工作的方式,因为我希望第一个值进入第一列,第二个值进入第二列。我该怎么办?

旁注:在我了解有关参数化的更多信息之前,这是一个粗略的草案。在我学习并实现它之前,我不会发布这个代码。

4

4 回答 4

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));
于 2013-05-16T16:37:00.873 回答
1

给定的 SQL 片段会做你想做的事——尤其是列的序列将被保留。

我怀疑您可能已经切换了变量,导致相同的现象,但出于其他原因。

于 2013-05-16T19:06:10.770 回答
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} 周围加上引号

编辑:哦,是的,接下来一定要查看参数

于 2013-05-16T16:34:59.490 回答
0

使用参数化查询来防止 SQL 注入,你可以解决这个问题

 command.Parameters.Add("AcctNum", acctNum);
于 2013-05-16T17:48:43.583 回答