web-dev-qa-db-ja.com

C#自動インクリメントで挿入IDを取得する

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

            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();

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

12
MTA

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

cmd.ExecuteNonQuery();
long id = cmd.LastInsertedId;
25
dugas
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();
1
Tim

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

SET @newPK = LAST_INSERT_ID();

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

0
Petar Repac