• 7477阅读
  • 7回复

QSqlQuery 的EXEC()方法问题 - 已解決 [复制链接]

上一主题 下一主题
离线gundam
 
只看楼主 倒序阅读 楼主  发表于: 2009-08-03
— 本帖被 XChinux 从 General Qt Programming 移动到本区(2011-01-02) —
QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
QSqlQuery query(db);

db.setDatabaseName("XYZ123.db");

if (!db.open()) {
   qDebug("DB File open fault!!");
   return;
}

query.prepare("SELECT * FROM SONGDATA");

if(!query.exec())
           qDebug("query fault!!");

db.open();能得出TURE,沒有問題
但测试query.exec();就一直是FALSE;
请求高人指點,謝謝
[ 此帖被gundam在2009-08-04 14:55重新编辑 ]
离线jorneyr

只看该作者 1楼 发表于: 2009-08-03
QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
db.setDatabaseName("XYZ123.db");
if (!db.open()) {
   qDebug("DB File open fault!!");
   return;
}

QSqlQuery query(db);

if(!query.exec("SELECT * FROM SONGDATA"))
           qDebug("query fault!!");

试试这个
离线allblue

只看该作者 2楼 发表于: 2009-08-03
遇到过同样的问题,关注
黑暗魔法
离线gundam
只看该作者 3楼 发表于: 2009-08-04
引用第1楼jorneyr于2009-08-03 19:47发表的  :
QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
db.setDatabaseName("XYZ123.db");
if (!db.open()) {
   qDebug("DB File open fault!!");
   return;
.......

謝謝jorneyr!但是狀況仍然是一樣.
我Qt版本是4.5.1,XYZ123.db是用SQLITE3.5.1版本且是放在test.qrc裡.
不知道是否為版本或是XYZ123.db問題?
[ 此帖被gundam在2009-08-04 10:01重新编辑 ]
离线foxyz

只看该作者 4楼 发表于: 2009-08-04
你看看 query.lastError().text().....是什么!
离线gundam
只看该作者 5楼 发表于: 2009-08-04
引用第4楼foxyz于2009-08-04 10:22发表的  :
你看看 query.lastError().text().....是什么!

謝謝foxyz !
query.lastError().text()是"no such table: SONGDATA Unable to execute statement."
我再確認一次XYZ123.db內容.謝謝~
[ 此帖被gundam在2009-08-04 11:10重新编辑 ]
离线jorneyr

只看该作者 6楼 发表于: 2009-08-04
不要把数据库放在qrc里, qrc里的文件不允许被修改.
先放到工程目录里.
离线gundam
只看该作者 7楼 发表于: 2009-08-04
引用第6楼jorneyr于2009-08-04 12:11发表的  :
不要把数据库放在qrc里, qrc里的文件不允许被修改.
先放到工程目录里.

謝謝 jorneyr !
問題已解決~!
把数据库放在到工程目录里就可以了.

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);
    QString Result;

    QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");

    db.setDatabaseName("J:/test/XYZ123.db");

    if (!db.open()) {
        qDebug("DB File open fault!!");
        Result = db.lastError().text();
    }

    QSqlQuery query(db);



    if(!query.exec("SELECT * FROM SONGDATA"))
    {
        qDebug("query fault!!");

        Result = query.lastError().text();
    }
    else
    {
        int fieldNo = query.record().indexOf("SONGID");

        while (query.next())
            qDebug() << query.value(fieldNo).toString();
    }

    return a.exec();
}
快速回复
限100 字节
 
上一个 下一个