QT SQLite无法在嵌入式设备中运行

时间:2011-05-25 11:45:21

标签: c++ qt

我正在使用QT框架。基本上我正在为ARM设备创建应用程序。

现在我已经使用SQLite为数据库工作创建了示例应用程序。事情就是一个人在我的桌面上工作,但当我交叉编译它为设备并试图在我的设备中执行时获取错误。

所以我记录了一些错误消息。最后我发现DB文件已成功创建但无法在设备中创建表。

是否是因为内存不足问题?

代码:

QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
    db.setDatabaseName("songs.db");
    if (!db.open()) {
        QMessageBox::critical(0, qApp->tr("Cannot open database"),
            qApp->tr("Unable to establish a database connection.\n"
                     "This example needs SQLite support. Please read "
                     "the Qt SQL driver documentation for information how "
                     "to build it.\n\n"
                     "Click Cancel to exit."), QMessageBox::Cancel);
        //return false;

debugLog("#fileListThread::run()-> Unable to establish a database connection.."<<db.lastError(););
                }
else
{
    debugLog("#fileListThread::run()-> opened songs.db successfully..");
}

QSqlQuery query;


bool queryStatus = query.exec("create table songsList (id int primary key, "
           "Song varchar(20), Artist varchar(20),Producer varchar(20))");

if(queryStatus)
{
    debugLog("#fileListThread::run()-> created table in songs DB successfully..");
}
else
{
    debugLog("#fileListThread::run()-> failed to create table in songs DB.."<<query.lastError(););
}

好!一个更快速的问题 - &gt;是否可以在嵌入式设备中创建DB文件并执行查询。在我的设备中,可用内存为9MB。

谢谢, 毗

1 个答案:

答案 0 :(得分:0)

我认为你应该使用

CREATE TABLE IF NOT EXISTS songsList

sql语句而不是

create table songsList

否则,一旦创建了表,第二次尝试执行该表时,可能会出错。

除此之外,我没有看到问题,但谁知道......我希望这会有所帮助。