Вернуть кортеж после PUT MySQL C#

167
30 сентября 2017, 19:21

В рамках собственного проекта работаю с БД на MySQL через C#. С помощью коннектора оперирую чистыми запросами, передавая их как строку. Идентификаторами кортежей (первичными ключами) управляет сама база (auto_increment). Обычный код по добавлению у меня выглядит так:

public void PutPet()
{
    if (string.IsNullOrEmpty(PatientID)
        || string.IsNullOrEmpty(Alias)
        || string.IsNullOrEmpty(Form))
    {
        throw new ArgumentException();
    }
    string CommandText =
        "insert into " + TABLE_NAME + 
        "(" + ATRIBUTE_PATIENT_ID + 
        ", " + ATRIBUTE_ALIAS + 
        ", " + ATRIBUTE_FORM + 
        ", " + ATRIBUTE_MF + 
        ", " + ATRIBUTE_BORN_DATE + 
        ", " + ATRIBUTE_STATUS + 
        ") values('" + PatientID + 
        "','" + Alias + 
        "','" + Form + 
        "','" + MF + 
        "','" + BornDate + 
        "','" + Status + "')";//команда
    MySqlConnection myConnection = new MySqlConnection(DataBaseManager.GetConnectLine());//создаем объект для подключения
    MySqlCommand myCommand = new MySqlCommand(CommandText, myConnection);//создаем объект передачи команды
    myConnection.Open();//открываем подключение
    myCommand.ExecuteNonQuery();//передаем команду
    myConnection.Close();//закрываем подключение
}

Однако метод ExecuteNonQuery() возвращает только число затронутых строк. Какой метод мне использовать, чтобы добавить и получить объект, добавленный в БД, со сгенерированным идентификатором? И есть-ли такой метод вообще?

Answer 1

Для того чтобы получить последнее значение id при автоинкременте обычно используется LAST_INSERT_ID().

Например:

SELECT LAST_INSERT_ID();

Но... Как такая система будет вести себя в многопользовательской среде? Вопрос риторический.

Более разумно поработать со структурой таблицы (например, вместо автоинкрементного id генерировать GUID перед добавлением) или как сказали ранее в комментариях, используйте ORM.

READ ALSO
Отображение и выбор результатов поиска

Отображение и выбор результатов поиска

Есть алгоритм поиска, который возвращает List<string> с путями к найденным файламХочется создать окно, в которое будет передаваться результаты...

207
авторизация на C# и MySql

авторизация на C# и MySql

Имеется следующий код:

313
Async-загрузка скрипта в Electron&#39;e

Async-загрузка скрипта в Electron'e

Вопрос новичка в javascript'е и Electron'еПростой пример из урока про асинхронную загрузку скрипта:

304
Разница дат из строки JS

Разница дат из строки JS

Тут я попытался изобразить следующее:

347