crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

3 страниц V  < 1 2 3  
Ответить в данную темуНачать новую тему
> Qt + SQLite, Не могу закрыть соединение с базой
512es
  опции профиля:
сообщение 8.12.2010, 21:05
Сообщение #21


Участник
**

Группа: Участник
Сообщений: 135
Регистрация: 31.10.2008
Пользователь №: 407

Спасибо сказали: 5 раз(а)




Репутация:   0  


1) склайту не нужно указывать HostName, UserName и Password

2) в чём суть функции maindbCreate()? по сути она вообще ничего не делает

3) maindbCreate.lastError().text() в maindbCreate() это вообщем то возвращаемая переменная. в твоём примере не используется.

4) не правильно:
queryMaindbInsert.exec("INSERT INTO (name) VALUES ('"+editCreateName->text()+"');");

Для подстановки значений в запрос есть специальная функция prepare():
queryMaindbInsert.prepare("INSERT INTO (name) VALUES (?);");
queryMaindbInsert.addBindValue(ui->editCreateName->text());
if (!queryMaindbInsert.exec()) {qDebug() << queryMaindbInsert.lastError().text(); return;}


5)
CREATE TABLE user (id INTEGER PRIMARY KEY NOT NULL, name VARCHAR(20));

инсертить так как ты делаешь в эту таблицу не получится. id при вставке не задаёшь. возможно ты хотел сделать так:
id INTEGER PRIMARY KEY AUTOINCREMENT


6) создаёшь базу QSqlDatabase::addDatabase("QSQLITE"); а удаляешь QSqlDatabase::removeDatabase("QSQLITE"); -- так нельзя. при создании не указываешь имя соединения, только драйвер. а удаляешь по неизвестному имени соединения "QSQLITE". по имени драйвера то нельзя удалять. должно ругаться на ошибки.

7) мне показалось или ты и правда пытаешься создавать и удалять соединения с бд каждый раз? почитай мой пример ещё раз внимательнее
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Dimix
  опции профиля:
сообщение 10.12.2010, 13:17
Сообщение #22


Студент
*

Группа: Участник
Сообщений: 74
Регистрация: 24.11.2010
Пользователь №: 2215

Спасибо сказали: 0 раз(а)




Репутация:   0  


Цитата
Мне показалось или ты и правда пытаешься создавать и удалять соединения с бд каждый раз? почитай мой пример ещё раз внимательнее

Я и вправде создаю и удаляю каждый раз драйвер БД. Почему я так решил! У меня работа с данными пользователь может заполнять и удалять их (я сделал как 100% вариант сохранения данных так как соединение и драйвер БД являются отруюленными ошибки при аварийном завершении не будет) Я новичек и еще несильно понимаю как правильно...
У меня срочный вопрос.
В БД существует поле Дата. Как сделать ильтр по заданному пользователем диапазону.
Пример:
___Дата____|К-во|_Чего_
01, 01, 2010 | 100 | литров
06, 02, 2010 | 200 | литров
01, 01, 2011 | 300 | литров

Вывести с 01, 02, 2010 по 01, 06, 2010 года
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Dimix
  опции профиля:
сообщение 10.12.2010, 17:55
Сообщение #23


Студент
*

Группа: Участник
Сообщений: 74
Регистрация: 24.11.2010
Пользователь №: 2215

Спасибо сказали: 0 раз(а)




Репутация:   0  


Цитата
В БД существует поле Дата. Как сделать фильтр по заданному пользователем диапазону.
Пример:
___Дата____|К-во|_Чего_
01, 01, 2010 | 100 | литров
06, 02, 2010 | 200 | литров
01, 01, 2011 | 300 | литров

Вывести с 01, 02, 2010 по 01, 06, 2010 года

Тип данных у поля date DATA.

QString ddBegin, mmBegin, yyBegin, ddEnd, mmEnd, yyEnd;
ddBegin="01";mmBegin="02";yyBegin="2010";
ddEnd="01";mmEnd="06";yyEnd="2010";
QSqlQueryModel* model = new QSqlQueryModel;
model->setQuery("SELECT * FROM coming WHERE date >='"+ddBegin+", "+mmBegin+", "+yyBegin+"'and date <='"+ddEnd+", "+mmEnd+", "+yyEnd+"';");

Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
512es
  опции профиля:
сообщение 10.12.2010, 22:14
Сообщение #24


Участник
**

Группа: Участник
Сообщений: 135
Регистрация: 31.10.2008
Пользователь №: 407

Спасибо сказали: 5 раз(а)




Репутация:   0  


Dimix, почитай доки про склайт. совершенно безопасно сохранять постоянное подключение к бд. мало того, база данных умеет работать и с несколькими пользователями одновременно.
это тебе не xml-ки.
кроме того, что то мне подсказывает что создание множества баз данных в твоём случае тоже не обосновано.

вот напимер. в моём проекте всего одна база склайта, причём, подключаюсь я к одному и тому же файлу двумя коннектами в разных потоках. тоесть, можно сказать, два пользователя, которые постоянно пишут и читают. размер базы планируется сотни м.б. более десяти таблиц. и всё отлично работает!

советую пересмотреть концепцию)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Dimix
  опции профиля:
сообщение 13.12.2010, 2:07
Сообщение #25


Студент
*

Группа: Участник
Сообщений: 74
Регистрация: 24.11.2010
Пользователь №: 2215

Спасибо сказали: 0 раз(а)




Репутация:   0  


Возникла проблема такого характера. Нужно изменить запись в базе данных. Пример.
ID | NAME | LOOK
1 | TOM | 1
2 | JON | 0
Поле LOOK это типо просматривался пользователь или нет
Мне нужно чтоб когда я посмотрю пользователя JON его LOOK стал 1
Я думал просто забирать все данные и записывать их по новому а удалять типо по ID но если я удалю TOM то ID JON останется всеравно 2.
Помогите!
Причина редактирования: не используйте на форуме школьно-студенческие жаргончики и запятые не забывайте
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

3 страниц V  < 1 2 3
Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 28.5.2024, 14:46