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

тегизаметки, SQLite, си шарп, базы данных, visual studio




Отправляя сообщение я подтверждаю, что ознакомлен и согласен с политикой конфиденциальности данного сайта.



Базы данных ADO.NET на языке C++\CLI
Тюремные нравы
Атрибуты продукта, или интерактив с помощью jQuery