Russian Qt Forum

Qt => Базы данных => Тема начата: Alexsandr от Январь 14, 2012, 14:16



Название: Добавление в базу данных
Отправлено: 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;
Но помимо этой бд, подключена еще одна. Может ли проблема быть в, том что подключено несколько бд???


Название: Re: Добавление в базу данных
Отправлено: Rem Norton от Январь 14, 2012, 20:48
Попробуй так:
Код
C++ (Qt)
//
//
QSqlQuery Info(usr); //usr - это QSqlDatabase
//
//
Info.exec("INSERT INTO table (info)" " VALUES ("+inform+")");
 


Название: Re: Добавление в базу данных
Отправлено: LisandreL от Январь 14, 2012, 23:34
Но помимо этой бд, подключена еще одна. Может ли проблема быть в, том что подключено несколько бд???
Вывод приложения не читай @ вопросы на на форуме задавай.
Вы не указываете название подключения к БД, поэтому используется дефолтное и одно подключение перетирает другое.

Попробуй так
Никогда тк не делайте, только prepare + bindValue.


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

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


Название: Re: Добавление в базу данных
Отправлено: LisandreL от Январь 16, 2012, 15:29
может тогда уже так QSqlQuery Info(QString("...").arg(...));?
От инъекций (случайных или специальных) это вас не спасёт.


Название: Re: Добавление в базу данных
Отправлено: Exproment от Январь 17, 2012, 16:41
"Никогда тк не делайте, только prepare + bindValue." - немогли бы вы поподробнее.. а лучше маленький экземпл... что-то непонял вашу мысль ((


Название: Re: Добавление в базу данных
Отправлено: Rem Norton от Январь 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, но вот жаль, что сути моего предыдущего поста никто не уловил...  :(