0
strSQL = @"UPDATE UserLogin 
                       SET UserPassword= @paramUserPassword
                       WHERE UserId= @paramUserId";
            objOleDbCommand = new OleDbCommand(strSQL, connectionstring);

            objOleDbCommand.Parameters.AddWithValue("@paramUserId", "1");
            objOleDbCommand.Parameters.AddWithValue("@paramUserPassword", "ooo");

            objOleDbComm.ExecuteNonQuery(objOleDbCommand);

其中 UserPassword 和 UserId 具有文本数据类型。表未使用上述查询更新。

4

1 回答 1

1

您设置的OleDbCommand查询参数不正确。如OleDbCommand.Parameters Property的 MSDN 文章中所述,OleDbCommand 对象不支持您使用命名参数的方式。您将使用问号字符作为参数的占位符,然后按照与查询中出现的完全相同的顺序声明参数。

尝试这个:

var strSQL = @"UPDATE UserLogin 
               SET    UserPassword= ?
               WHERE  UserId= ?";

using (var myConnection = new OleDbConnection(connectionstring)) 
using (var objOleDbCommand = new OleDbCommand(strSQL, myConnection)) {

    // Parameter used for the SET statement declared before the parameter for the WHERE
    // clause since this parameter is used before that one in the SQL statement.
    objOleDbCommand.Parameters.AddWithValue("@paramUserPassword", "ooo");
    objOleDbCommand.Parameters.AddWithValue("@paramUserId", "1");

    myConnection.Open();
    objOleDbCommand.ExecuteNonQuery();
}

这段代码还演示了using语句,它将确保在退出块时处理OleDbConnection和对象使用的资源。OleDbCommand

于 2013-05-04T06:25:36.057 回答