// Выполняет запрос, и в случае если это был INSERT, возвратит rowid добавленной записи
private int ExecuteSQLQuery(string query, out int lastInsertedRowId)
{
using (var connection = new SqliteConnection($"Data Source={m_fileName}"))
{
connection.Open();
int rowCount;
using (var command = connection.CreateCommand())
{
command.CommandText = query;
rowCount = command.ExecuteNonQuery();
}
// Получаем rowid последней добавленной записи. Важно чтобы он был в пределах того же соединения
// что и INSERT запрос (который предположительно идет прямо перед этим), иначе всегда возвращается 0
using (var command = connection.CreateCommand())
{
command.CommandText = "SELECT last_insert_rowid();";
using (var reader = command.ExecuteReader())
{
Debug.Assert(reader.HasRows);
reader.Read();
lastInsertedRowId = reader.GetInt32(0);
}
}
connection.Close();
return rowCount;
}
}