Название: Qt, SQLite, autoincrement Отправлено: saim от Май 03, 2015, 10:00 Здравствуйте ! У меня возникла проблема, есть таблица базы данных с авто инкрементирующим полем , скрипт (файл с запросами, через некий разделитель) лежит в папке , я достаю все нужные мне строки для выполнения запроса из файла парсю по разделителю , и сую это все в цикл на выполнение (см. код ниже):
Код: // выполнение запросов полученый с файла Скрипты для примера покажу создание таблицы и добавление в нее записей .. Код: // создание таблицы Код: //добавление записей Если создавать так: Код: create table dic_Task_Network (id integer primary key, name varchar(256), image BLOB, comment varchar(256)) За ранее спасибо ! через некий разделитель) лежит в папке , я достаю все нужные мне строки для выполнения запроса из файла парсю по разделителю , и сую это все в цикл на выполнение (см. код ниже): Код: // выполнение запросов полученый с файла Скрипты для примера покажу создание таблицы и добавление в нее записей .. Код: // создание таблицы Код: //добавление записей Если создавать так: Код: create table dic_Task_Network (id integer primary key, name varchar(256), image BLOB, comment varchar(256)) Заранее спасибо ! Название: Re: Qt, SQLite, autoincrement Отправлено: saim от Май 10, 2015, 11:05 Форумчане!! Ни у кого нету идей ??
С ув. Saim! Название: Re: Qt, SQLite, autoincrement Отправлено: PimenS от Май 10, 2015, 11:28 Цитировать // выполнение запросов полученый с файла QSqlQuery q("", db); for(int i = 0 ; i < listQuery.size (); i++) { q.exec (listQuery.at (i)); qDebug() << "listQuery [ " << i << " ]" << q.exec(listQuery.at(i)) << "listValue= " <<listQuery.at(i) ; } зачем 2 раза делать q.exec (listQuery.at (i))? Название: Re: Qt, SQLite, autoincrement Отправлено: Bepec от Май 10, 2015, 14:07 Чего то тема пролетела мимо глаз моих.
Ну во 1, при автоинкременте нужно передавать QVariant(). Во 2, вроде нужны поставить Not Null и Unique в поле индекса. И вот тогда у вас всё должно заработать. to PimenS - это отладочный вывод, не зависящий от происходящих в цикле действий. Следовательно данные должны быть взяты первый раз для работы внутри цикла, второй раз для дебажного вывода. Название: Re: Qt, SQLite, autoincrement Отправлено: Old от Май 10, 2015, 14:24 to PimenS - это отладочный вывод, не зависящий от происходящих в цикле действий. Следовательно данные должны быть взяты первый раз для работы внутри цикла, второй раз для дебажного вывода. Чего? :)Какие данные? В цикле дважды выполняется запрос, и если это запрос на вставку записи, то будет вставляться по две записи за итерацию. Название: Re: Qt, SQLite, autoincrement Отправлено: PimenS от Май 10, 2015, 15:37 Чего то тема пролетела мимо глаз моих. Ну во 1, при автоинкременте нужно передавать QVariant(). Во 2, вроде нужны поставить Not Null и Unique в поле индекса. И вот тогда у вас всё должно заработать. to PimenS - это отладочный вывод, не зависящий от происходящих в цикле действий. Следовательно данные должны быть взяты первый раз для работы внутри цикла, второй раз для дебажного вывода. 1. При автоинкременте, в это поле вообще ничего передавать не надо, оно автоматом заполняется. 2. Автоинкремент и должен обрабатывать UNIQUE, а NOT NULL выставляется автоматом по PRIMARY KEY. (Хотя на 100% для SQLite не уверен про UNIQUE) Для Postgresql работает Код: CREATE TABLE exchange.test 3. Old ответил за меня. Название: Re: Qt, SQLite, autoincrement Отправлено: saim от Май 10, 2015, 20:12 Всем огромное СПАСИБО!!! Это моя не внимательность, прошу прощение!* Тему можно закрыть ...
Название: Re: Qt, SQLite, autoincrement Отправлено: Bepec от Май 10, 2015, 23:07 судил по первому слову. Был неправ. Тему закрывайте сами :)
Название: Re: Qt, SQLite, autoincrement [Решено !] Отправлено: saim от Май 11, 2015, 10:35 Вопрос закрыт!)
|