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ステートメントも示しています。OleDbConnectionOleDbCommand

于 2013-05-04T06:25:36.057 に答える