#mysql #database #qt #class
#mysql #База данных #qt #класс
Вопрос:
Я хочу создать класс в моем QT projecto, для обработки SQL-соединения и всех необходимых запросов и sql-транзакций.
Я обнаружил, что для отсутствия этой ошибки «QSqlQuery:: exec: База данных не открыта» мне пришлось инициализировать QSqlQuery только ПОСЛЕ инициализации и открытия QSqlDatabase.
Проблема в том, что я не знаю, как это сделать…
Вот мой код :
private:
QSqlDatabase MyDBConnection;
// Efectua a ligação à DB
bool MySqlCon()
{
MyDBConnection = QSqlDatabase::addDatabase("QMYSQL");
if (!MyDBConnection.isValid())
qDebug() << "ERRO DRIVER MYSQL";
MyDBConnection.setHostName("localhost");
MyDBConnection.setUserName("username");
MyDBConnection.setPassword("password");
if (MyDBConnection.open())
{
MySqlQuery = QSqlQuery(MyDBConnection);
return true;
}
else
{
qDebug() << MyDBConnection.lastError();
qDebug() << "Não Ligado Com Sucesso";
return false;
}
}
public:
QSqlQuery MySqlQuery;
// Lê valores na DB
void DBReader(QString Query)
{
if(MySqlCon())
MySqlQuery.exec(Query);
else
qDebug() << "ERRO";
}
Заранее спасибо,
Luis Da Costa
Комментарии:
1. Пожалуйста, не редактируйте названия вопросов, чтобы указать [решено]. Вы можете принять предоставленный ответ или добавить свой собственный ответ, объясняющий решение, и согласиться с этим.
Ответ №1:
Думаю, я вас понял. Из QT Doc :
Предупреждение: Вы должны загрузить драйвер SQL и открыть соединение перед созданием QSqlQuery. Кроме того, соединение должно оставаться открытым, пока существует запрос; в противном случае поведение QSqlQuery не определено.
Итак, создайте объект запроса после того, как вы открыли базу данных (т.е. объявите его в методе)
Комментарии:
1. Извините, это была моя ошибка XD .. мой запрос был неправильным: S … Если только я могу использовать исключения в Qt, как в C # или Java … это мне очень поможет !… Спасибо ^^