Модераторы: Akella
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Получить id последней добавленной записи в таблице 
:(
    Опции темы
heliogracie
Дата 28.3.2013, 22:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 28.3.2013

Репутация: нет
Всего: нет



Не могу правильно организовать условие, в котором если запись в таблице существует, то вернуть rowid этой записи, если же не существует то добавить эту запись в таблицу и вернуть её rowid. Пишу на C#. Версия фреймворка 4.0. В качестве базы данных использую Sqlite. Блок if возвращает rowid верный, но вот else выдает постоянно rowid равный 1.


Код

        static void Main(string[] args)
        {
            string dbName = "Data Source=searchindex.db";

            using (SQLiteConnection con = new SQLiteConnection(dbName))
            {
                con.Open();

                using (SQLiteCommand cmd = new SQLiteCommand(con))
                {
                    cmd.CommandText = "SELECT count(rowid) FROM wordlist WHERE word='milk'";
                    int countRows = Convert.ToInt32(cmd.ExecuteScalar());
                    
                    if (countRows == 0) // Если запись не существует в таблице, добавляем её в таблицу и получаем её rowid
                    {
                        cmd.CommandText = "INSERT INTO wordlist(word) VALUES ('milk')";
                        cmd.ExecuteNonQuery();

                        cmd.CommandText = "SELECT last_insert_rowid()";
                        int lastId = Convert.ToInt32(cmd.ExecuteScalar());
                        Console.WriteLine("inserting rowid {0}", lastId);
                    }
                    else // Иначе просто возвращаем rowid
                    {
                        SQLiteDataReader res = cmd.ExecuteReader();
                        Console.WriteLine("selecting rowid {0}", res[0]);
                        res.Close();
                    }
               }
          }

PM MAIL   Вверх
Akella
Дата 12.4.2013, 08:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18476
Регистрация: 14.5.2003
Где: Корусант

Репутация: нет
Всего: 329



Цитата(heliogracie @  28.3.2013,  22:41 Найти цитируемый пост)
Пишу на C#. Версия фреймворка 4.0. 


А при чем здесь это к SQL?

Добавлено через 34 секунды
А так?

Добавлено через 1 минуту и 15 секунд
http://stackoverflow.com/questions/3634984...sts-else-update

Код
insert or replace into Book (Name, TypeID, Level, Seen) values ( ... )


Добавлено через 3 минуты и 16 секунд
Почитать про синтаксис Sqlite`а разве негде?
Sqlite поддерживает Insert into .... returning...? Или как в MySQL: SELECT last_insert_....
PM MAIL   Вверх
Google
  Дата 21.5.2019, 21:42 (ссылка)  





  Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Другие СУБД | Следующая тема »


 




[ Время генерации скрипта: 0.2321 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.