Russian Qt Forum
Ноябрь 23, 2024, 18:02 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Добавление в базу данных  (Прочитано 4863 раз)
Alexsandr
Гость
« : Январь 14, 2012, 14:16 »

Не добавляются записи в базу данных, делаю следующим образом:
Код:
QString inform;
inform = ui->textEdit->toPlainText();
QSqlQuery Info;
Info.exec("INSERT INTO table (info)" " VALUES ("+inform+")");
Запись должна добавляться из textEdit, т.е. написали текст в textEdit, нажали кнопочку и должен выполниться запрос, который добавляет эту запись в бд, но увы, ничего не происходит.
Базу данных подключаю следующим образом:
Код:
 
QSqlDatabase usr = QSqlDatabase::addDatabase("QSQLITE");
   usr.setDatabaseName("E:/system/System/usr.db");
    if(!usr.open())
    {
        QMessageBox::critical(0,"Connection error!","Connection failed!");
        return false;
    }
    return true;
Но помимо этой бд, подключена еще одна. Может ли проблема быть в, том что подключено несколько бд???
Записан
Rem Norton
Гость
« Ответ #1 : Январь 14, 2012, 20:48 »

Попробуй так:
Код
C++ (Qt)
//
//
QSqlQuery Info(usr); //usr - это QSqlDatabase
//
//
Info.exec("INSERT INTO table (info)" " VALUES ("+inform+")");
 
Записан
LisandreL
Птица говорун
*****
Offline Offline

Сообщений: 984


Надо улыбаться


Просмотр профиля
« Ответ #2 : Январь 14, 2012, 23:34 »

Но помимо этой бд, подключена еще одна. Может ли проблема быть в, том что подключено несколько бд???
Вывод приложения не читай @ вопросы на на форуме задавай.
Вы не указываете название подключения к БД, поэтому используется дефолтное и одно подключение перетирает другое.

Попробуй так
Никогда тк не делайте, только prepare + bindValue.
Записан
BuRn
Гость
« Ответ #3 : Январь 16, 2012, 15:16 »

Но помимо этой бд, подключена еще одна. Может ли проблема быть в, том что подключено несколько бд???
Вывод приложения не читай @ вопросы на на форуме задавай.
Вы не указываете название подключения к БД, поэтому используется дефолтное и одно подключение перетирает другое.

Попробуй так
Никогда тк не делайте, только prepare + bindValue.
может тогда уже так QSqlQuery Info(QString("...").arg(...));?
Записан
LisandreL
Птица говорун
*****
Offline Offline

Сообщений: 984


Надо улыбаться


Просмотр профиля
« Ответ #4 : Январь 16, 2012, 15:29 »

может тогда уже так QSqlQuery Info(QString("...").arg(...));?
От инъекций (случайных или специальных) это вас не спасёт.
Записан
Exproment
Гость
« Ответ #5 : Январь 17, 2012, 16:41 »

"Никогда тк не делайте, только prepare + bindValue." - немогли бы вы поподробнее.. а лучше маленький экземпл... что-то непонял вашу мысль ((
Записан
Rem Norton
Гость
« Ответ #6 : Январь 20, 2012, 09:19 »

"Никогда тк не делайте, только prepare + bindValue." - немогли бы вы поподробнее.. а лучше маленький экземпл... что-то непонял вашу мысль ((
Имелось ввиду вот что:
Код
C++ (Qt)
QSqlQuery Info(usr); //usr - это QSqlDatabase
Info.prepare("INSERT INTO table (info)  VALUES (:INFO)");
Info.bindValue("INFO",inform);
Info.exec();
 

Оно конечно приятно, что аж 2 человека в этой теме в курсе про bindValue, но вот жаль, что сути моего предыдущего поста никто не уловил...  Грустный
« Последнее редактирование: Январь 20, 2012, 09:20 от Rem Norton » Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.167 секунд. Запросов: 23.