一个参数值从字面上更新但其他工作正常C#

时间:2015-09-16 11:10:53

标签: c# sql-server gridview

我正在使用insert语句,其中需要插入3个值来从gridview中获取数据并将其保存在表中但是"关键字参数值正在逐渐更新,就像数据库中的@Keyword一样。但其他价值观正常。

以下是代码

            using (SqlCommand com = new SqlCommand("INSERT INTO PositionsTable (Id,Keyword,Position) VALUES (@Id,'@Keyword',@Position)", con))
            {
                com.Parameters.AddWithValue("@Keyword", SqlDbType.VarChar);
                com.Parameters.AddWithValue("@Position", SqlDbType.Int);
                com.Parameters.AddWithValue("@Id", SqlDbType.Int);

                for (int i = 0; i < dataGridView1.Rows.Count; i++)
                {
                    string keywordCell = dataGridView1.Rows[i].Cells["Keywords"].Value.ToString();
                    int positionCell = Convert.ToInt16(dataGridView1.Rows[i].Cells["Position"].Value);

                    com.Parameters["@Keyword"].Value = keywordCell;
                    com.Parameters["@Position"].Value = positionCell;
                    com.Parameters["@Id"].Value = count;
                    com.ExecuteNonQuery();
                }
            }

我在调试时测试过,keywordCell变量成功地从gridview获取了像positionCell这样的值,但它得到了更新&#34; @ Keyword&#34;在数据库中positionCell正确更新。

你能指出我出错的地方吗?

2 个答案:

答案 0 :(得分:3)

你在SQ​​L语句

中引用了关键字

更改

"INSERT INTO PositionsTable (Id,Keyword,Position) VALUES (@Id,'@Keyword',@Position)"

"INSERT INTO PositionsTable (Id,Keyword,Position) VALUES (@Id,@Keyword,@Position)"

答案 1 :(得分:1)

VALUES(...)中的

'@Keyword'是错误的。

INSERT INTO PositionsTable (Id,Keyword,Position) VALUES (@Id, @Keyword, @Position)"