@postya

Как получить номер rowid из Sqlite?

Пишу десктопное приложение на C# + WPF
есть таблица в базе SQLite, есть поле ID

в поле ID находится номер каждой записи, по которому я провожу манипуляции с записями в бд

Я создал метод, который получает все строки с ID, и все эти номера вставляет в combobox. При клике на combobox в нём отображаются все ID таблицы.

Проблема в том,что если я удалю какую-либо запись из таблицы где-то в середине, то при создании новой записи, в поле ID будет номер не по порядку, а тот который станет после удаления, в combobox же мне нужны номера всех записей по порядку.

Как можно получить все номера id не по полю ID а по rowid? ведь там они все по порядку идут

Скрин моей таблицы SQlite:

5e14af1229a88868699885.jpeg

Метод получения всех id:

public void GetIdFromDatabase(ComboBox comboBox, string category)
        {
            SetConnection();
            sqlCon.Open();

            string selectQuery = "SELECT ID FROM" +  " " + category;
            sqlCommand = new SQLiteCommand(selectQuery, sqlCon);
           
            try
            {
                SQLiteDataReader sqReader = sqlCommand.ExecuteReader();
    
                // Always call Read before accessing data.
                while (sqReader.Read()) 
                {
                    
                    string questions = sqReader["ID"].ToString();
                    comboBox.Items.Add(questions);
                } 
                // always call Close when done reading.
                sqReader.Close();
            }
            finally
            {
                sqlCon.Close();
            }
        }
  • Вопрос задан
  • 1201 просмотр
Пригласить эксперта
Ответы на вопрос 1
@postya Автор вопроса
Решение найдено!

после того, как делаю манипуляции с данными в sqlite запускаю метод, который, будет делать следующий запрос:

UPDATE category1 SET ID = rowid;

этот запрос берёт все значения поля ID на всех строках и присваивает им значения из rowid, это специальное поле, которое назанчено по умолчанию и хранит все номера строк последовательно.

Только, если мне нужно удалить запись, перед этим запросом, нужно ещё сделать запрос vacuum;

результатом я доволен)
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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