Задать вопрос
georgich
@georgich

Как получить LastInsertRowId?

Приветствую!
Вот код:
public class Database
    {
        public SQLiteConnection Connection 
        {
            get
            {
                var connectionString = "Data Source=" + Settings.Default.database_filepath + ";Version=3;";
                var value = new SQLiteConnection(connectionString);
                return value.OpenAndReturn();
            }
        }

        public void Close()
        {
            if (Connection.State == ConnectionState.Open)
            {
                Connection.Close();
            }
        }
    }
.....
        public void Add(out long lastInsertedId)
        {
            var database = new Database();

            using (var dataAdapter = new SQLiteDataAdapter
            {
                InsertCommand = new SQLiteCommand("INSERT INTO hardware (title, component_parts, serial_number, inventory_number, category_id) VALUES (@title, @component_parts, @serial_number, @inventory_number, @category_id)", database.Connection)
            })
            {
                dataAdapter.InsertCommand.Parameters.AddWithValue("@title", Title);
                dataAdapter.InsertCommand.Parameters.AddWithValue("@component_parts", ComponentParts);
                dataAdapter.InsertCommand.Parameters.AddWithValue("@serial_number", SerialNumber);
                dataAdapter.InsertCommand.Parameters.AddWithValue("@inventory_number", InventoryNumber);
                dataAdapter.InsertCommand.Parameters.AddWithValue("@category_id", CategoryId);
                dataAdapter.InsertCommand.ExecuteNonQuery();

                lastInsertedId = database.Connection.LastInsertRowId;
            }

            database.Close();
        }

Всё хорошо, всё добавляется, но вот только LastInsertRowId всегда равен 0. Подскажите, пожалуйста, как исправить и почему не работает?
Спасибо!
  • Вопрос задан
  • 121 просмотр
Подписаться Простой Комментировать
Решения вопроса 2
erge
@erge
Примус починяю
попробуйте после вставки выполнить запрос:

select last_insert_rowid();

см. пример dbfiddle
Ответ написан
georgich
@georgich Автор вопроса
Решение:
lastInsertedId = dataAdapter.InsertCommand.Connection.LastInsertRowId;
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы