2

私はこのようなコードを持っています:

public int updateFriend(long id, string Firstname, string Lastname, string Nickname, DateTime Birthdate, int Age, string Gender)
    {
        OleDbConnection con = new OleDbConnection(conString());

        string query = "UPDATE FriendList SET Firstname  ='" + Firstname + "', Lastname ='" + Lastname + "',Nickname ='" + Nickname + "',Birthday ='" + Birthdate + "',Age ='" + Age + "', Gender  ='" + Gender + "' WHERE ID = " + id;

        OleDbCommand cmd = new OleDbCommand(query, con);

        con.Open();

        int rowsAffected = cmd.ExecuteNonQuery();
        con.Close();

        return (rowsAffected);
    }

今問題は、メソッドupdateFriendを呼び出す更新ボタンをクリックすると、行にエラーが表示されることです"int rowsAffected = cmd.ExecuteNonQuery();

「1 つ以上の必須パラメーターに値が指定されていません。」

誰かがこれで私を助けることができますか?

4

2 に答える 2

2
string query = "UPDATE FriendList SET Firstname  ='" + Firstname + "', Lastname ='" + Lastname + "',Nickname ='" + Nickname + "',Birthday ='" + Birthdate + "',Age ='" + Age + "', Gender  ='" + Gender + "' WHERE ID = " + id;

すべてのパラメーターを文字列として渡します。その一部は int で、1 つはDateTimeです。提案どおり、使用する必要がありますParameters.AddWithValue()

string query = "UPDATE FriendList SET Firstname = @Firstname, Lastname = @Lastname , Nickname = @Nickname, Birthday = @Birthdate, Age = @Age, Gender = @Gender WHERE ID = @id";
SqlCommand cmd = new SqlCommand(query, con);
cmd.Parameters.AddWithValue("@Firstname", FirstName);
//add rest parameters the same way as above
cmd.Parameters.AddWithValue("@id", id);
于 2013-02-11T14:45:15.677 に答える
1

あなたのエラーメッセージについて話しています。

「1 つ以上の必須パラメーターに値が指定されていません。」

このメッセージは、パラメータの 1 つがnullさ 0 の文字列である可能性があります。または、パラメーターのスペルミスが原因である可能性があります。

最初にデータベースのクエリを確認し、どの列でエラーが発生したかを確認してください。

また、SQL コマンドにパラメータを追加しないでください。これにより、SQL インジェクション攻撃が発生する可能性があります。常にparameterized queryクエリで使用します。

MSDNSqlParameterCollection.AddWithValue()からメソッドを確認してください。

于 2013-02-11T14:41:55.727 に答える