问题描述
|
我想在我的QT项目中创建一个类,以处理sql连接以及所有必要的查询和sql事务。
我发现没有这个错误\“ QsqlQuery :: exec:数据库未打开\”我只需要在初始化并打开QsqlDatabase之后初始化QsqlQuery。
问题是我不知道该怎么做...
有我的代码:
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\";
}
提前致谢,
路易斯·达·科斯塔
解决方法
我想我知道了。
从QT Doc:
警告:您必须加载SQL驱动程序
并在连接之前打开连接
QSqlQuery已创建。另外,
连接必须保持打开状态
查询存在;否则,行为
QSqlQuery的值未定义。
因此,在打开数据库后创建Query对象(即在方法中声明它)