14

このメソッドを使用して、テーブルに行を挿入しています。

            MySqlConnection connect = new MySqlConnection(connectionStringMySql);
            MySqlCommand cmd = new MySqlCommand();

            cmd.Connection = connect;
            cmd.Connection.Open();

            string commandLine = @"INSERT INTO Wanted (clientid,userid,startdate,enddate) VALUES" +
                "(@clientid, @userid, @startdate, @enddate);";
            cmd.CommandText = commandLine;

            cmd.Parameters.AddWithValue("@clientid", userId);
            cmd.Parameters.AddWithValue("@userid", "");
            cmd.Parameters.AddWithValue("@startdate", start);
            cmd.Parameters.AddWithValue("@enddate", end);

            cmd.ExecuteNonQuery();
            cmd.Connection.Close();

私はまた持っているid列を持っていAuto Incrementます。そして、新しい行を挿入したときに作成されるIDを取得できるかどうかを知りたいです。

4

3 に答える 3

31

MySqlCommandLastInsertedIdプロパティにアクセスできます。

cmd.ExecuteNonQuery();
long id = cmd.LastInsertedId;
于 2013-03-12T23:03:34.757 に答える
1
MySqlConnection connect = new MySqlConnection(connectionStringMySql);
MySqlCommand cmd = new MySqlCommand();

cmd.Connection = connect;
cmd.Connection.Open();

string commandLine = @"INSERT INTO Wanted (clientid,userid,startdate,enddate) "
    + "VALUES(@clientid, @userid, @startdate, @enddate);";
cmd.CommandText = commandLine;

cmd.Parameters.AddWithValue("@clientid", userId);
**cmd.Parameters["@clientid"].Direction = ParameterDirection.Output;**
cmd.Parameters.AddWithValue("@userid", "");
cmd.Parameters.AddWithValue("@startdate", start);
cmd.Parameters.AddWithValue("@enddate", end);

cmd.ExecuteNonQuery();
cmd.Connection.Close();
于 2013-03-12T23:06:21.120 に答える
0

基本的に、これをCommandTextの最後に追加する必要があります。

SET @newPK = LAST_INSERT_ID();

そして、別のADO.NETパラメータ「newPK」を追加します。コマンドが実行されると、新しいIDが含まれます。

于 2013-03-12T23:04:46.240 に答える