Подтвердить что ты не робот

С# Получить идентификатор вставки с помощью Auto Increment

Я использую этот метод для вставки строки в таблицу:

            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. И я хочу знать, можно ли получить идентификатор, который создается, когда я вставляю новую строку.

4b9b3361

Ответ 1

Вы можете получить доступ к свойству MySqlCommand LastInsertedId.

cmd.ExecuteNonQuery();
long id = cmd.LastInsertedId;

Ответ 2

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

Ответ 3

В основном вы должны добавить это в конец вашего CommandText:

SET @newPK = LAST_INSERT_ID();

и добавьте еще один параметр ADO.NET "newPK". После выполнения команды он будет содержать новый идентификатор.