Максимальный 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 - то есть могу доработать ваш сайт или помочь с веб-программированием. Пишите сюда.
Программы на заказ
Отзывы
Контакты