Максимальный id в SQLite
Одна из самых распространённых задач. Предположим, у нас имеется таблица со стандартной структурой: какой-то внутренний уникальный ид с автоинкрементом и другими полями: номер, название там, что-то еще. А вам необходимо при добавлении не указывать ид, пусть он сам прибавляется на единицу. Однако, автоинкремент может не работать, если не указывать ид явно. Вылезет что-то типа такой ошибки:
Ну что ж, тогда найдем максимальный и сами к нему прибавим единицу. Код:
int max_id = 0; using (var connection = new SQLiteConnection("Data Source=" + dbFileName + ";Version=3;")) { connection.Open(); try { using (SQLiteCommand command = new SQLiteCommand(connection)) { command.CommandText = "SELECT * FROM Chapter ORDER BY id DESC LIMIT 1"; SQLiteDataReader r = command.ExecuteReader(); while (r.Read()) { max_id = Convert.ToInt32(r["id"]); max_id++; } r.Close(); } } catch (SQLiteException ex) { MessageBox.Show("Error: " + ex.Message); } connection.Close();Вот и все, теперь в следующем запросе мы можем использовать переменную max_id. Все у нас работает:
Обратите внимание, что мы не задействуем операторов типа MAX(id) – так что теоретически это будет работать на любой СУБД, использующей язык запросов SQL – это базовый функционал. Если вам требуется помощь программиста онлайн в написании программ на си шарп или создании SQL запросов к базе данных, то вы можете обратиться ко мне. Мои услуги стоят недорого, причем за свои деньги вы получите гарантированный результат.
Автор этого материала - я - Пахолков Юрий. Я оказываю услуги по написанию программ на языках Java, C++, C# (а также консультирую по ним) и созданию сайтов. Работаю с сайтами на CMS OpenCart, WordPress, ModX и самописными. Кроме этого, работаю напрямую с JavaScript, PHP, CSS, HTML - то есть могу доработать ваш сайт или помочь с веб-программированием. Пишите сюда.
Отправляя сообщение я подтверждаю, что ознакомлен и согласен с политикой конфиденциальности данного сайта.