Доброго времени суток! Уважаемые форумчане, помогите разабраться с одним вопросом...
при попытке подключения к mssql и выполнения запросы выдаёт ошибку... В какую сторону копать...
#include "widget.h"
#include "ui_widget.h"
#include <QStringList>
#include <QString>
Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this);
qDebug()<<QSqlDatabase::drivers();
QStringList drivers = QSqlDatabase::drivers();
ui->mode->addItems(drivers);
ui->btnDisconnect->setEnabled(false);
ui->password->setEchoMode(QLineEdit::Password);
ui->scr->setReadOnly(true);
connect(ui->btnStart, SIGNAL(clicked()), this, SLOT(start()));
connect(ui->bptExec, SIGNAL(clicked()), this, SLOT(query_exec()));
connect(ui->btnDisconnect, SIGNAL(clicked()), this, SLOT(discon()));\
connect(ui->pbtTekSoed, SIGNAL(clicked()), this, SLOT(soed()));
}
Widget::~Widget()
{
delete ui;
}
void Widget::start()
{
ui->scr->clear();
ui->scr->append(tr("Соединяюсь с базой данных..."));
db = QSqlDatabase::addDatabase(ui->mode->currentText());
db.setHostName(ui->host->text());
db.setDatabaseName(ui->dbname->text());
db.setPort(ui->port->text().toInt());
db.setUserName(ui->user->text());
db.setPassword(ui->password->text());
if (db.open())
{
ui->mode->setEnabled(false);
ui->host->setEnabled(false);
ui->dbname->setEnabled(false);
ui->user->setEnabled(false);
ui->password->setEnabled(false);
ui->btnStart->setEnabled(false);
ui->port->setEnabled(false);
ui->btnDisconnect->setEnabled(true);
ui->scr->append(tr("Соединение установлено!"));
}
else
{
ui->scr->append(tr("Не могу соединиться: "));
ui->scr->append(db.lastError().text());
db.removeDatabase(db.connectionName());
}
ui->scr->append( tr(
"При закрытии окна соединение с БД будет завершено."));
}
void Widget::query_exec()
{
QSqlQuery sql = QSqlQuery();
sql.exec(ui->quvery->text());
if (sql.exec())
{
ui->scr->clear();
ui->scr->append(tr("Запрос выполнен!"));
}
else
{
ui->scr->append(tr("Ошибка выполнения запроса! %1").arg(sql.lastError().text()));
}
if ( sql.isActive() ) {
QSqlRecord rec = sql.record();
ui->scr->append( tr(
"В таблице %1 столбцов: ")
.arg(rec.count() ) );
QString fields;
for(int j=0; j<rec.count(); j++)
fields += rec.fieldName(j) + ", ";
ui->scr->append(fields);
ui->scr->append( tr(
"В таблице %1 записей: ")
.arg(sql.size() ) );
model = new QSqlQueryModel();
model->setQuery(sql);
ui->tableView->setModel(model);
ui->tableView->setSortingEnabled(true);
ui->tableView->setEditTriggers(QAbstractItemView::NoEditTriggers);
}
else
{
ui->scr->append( tr(
"Не могу получить данные:"));
ui->scr->append(sql.lastError().text());
}
}
void Widget::discon()
{
db.close();
db.removeDatabase(db.connectionName());
ui->mode->setEnabled(true);
ui->host->setEnabled(true);
ui->dbname->setEnabled(true);
ui->user->setEnabled(true);
ui->password->setEnabled(true);
ui->btnStart->setEnabled(true);
ui->port->setEnabled(true);
ui->btnDisconnect->setEnabled(false);
}
void Widget::soed()
{ int i;
QStringList j=QSqlDatabase::connectionNames ();
ui->scr->append(tr("\n"));
for(i=0;i<j.size();++i)
{
ui->scr->append(tr(" Текущие соединения N %1 - %2 ").arg(i+1).arg(j.at(i)));
}
if (db.connectionName()==NULL)
{
ui->scr->append(tr("Подключение отсутствует!"));
}
ui->scr->append(tr("\n"));
}
void Widget::on_btnClear_clicked()
{
ui->quvery->clear();
}
Эскизы прикрепленных изображений