SQL更新命令不起作用,受影响的行返回0

时间:2016-04-09 14:43:59

标签: c# sql oledb

我有这个方法

public void Update(int id, string name)
    {
        OpenConnection();
        using (OleDbCommand update = new OleDbCommand("UPDATE Students SET Name = @name WHERE ID = @id", databaseConnection))
        {
            update.Parameters.AddWithValue("@id", id);
            update.Parameters.AddWithValue("@name", name);
            MessageBox.Show(update.ExecuteNonQuery().ToString());
        }
        CloseConnection();
    }

当它运行时,我受到0行的影响。我尝试将命令括在选择块中。

            using (OleDbCommand select = new OleDbCommand("SELECT * FROM Students WHERE ID = @id", databaseConnection))
        {
            select.Parameters.AddWithValue("@id", id);
            using (OleDbDataReader reader = select.ExecuteReader())
            {
                using (OleDbCommand update = new OleDbCommand("UPDATE Students SET Name = @name WHERE ID = @id", databaseConnection))
                {
                    update.Parameters.AddWithValue("@id", id);
                    update.Parameters.AddWithValue("@name", name);
                    MessageBox.Show(update.ExecuteNonQuery().ToString());
                }
            }
        }

执行此操作时,消息框仍会触发,并且会影响0行。我在这里做错了什么?

1 个答案:

答案 0 :(得分:1)

Oledb不接受命名参数。 使用 ”?”替换您的命名参数,并安排您添加的值以匹配查询语句的位置。

请参阅此文档。

oledb parameter