我在桂林的日子 » 日志 » QT4下操作sqlite的一点小问题
QT4下操作sqlite的一点小问题
tingxx 发表于 2008-05-11 14:10:39
这几天练习用qt4操作sqlite。遇到的一个小问题,费了我不少时,最后看sqlite的文档才无意解决了。
在qt4下使用sqlite,首先是
添加数据库驱动:
db=QSqlDatabase::addDatabase("QSQLITE");
然后指定用的数据库名字,在sqlite对应的就是数据文件名
db.setDatabaseName(ui.dbFileEdit->text());
接着打开数据库,如果db.open()为true,则成功
下面就可以操作数据库了,在我的程序要首先要打开一个表,如果表不存在的话还要创建。用的是 create table if not exists
QSqlQuery query;
bool ok=query.exec("Create table if not exists money(id INTEGER PRIMARY KEY AUTOINCREMENT ,"
"date VARCHAR(10), type VARCHAR(8), sum FLOAT, tags VARCHAR(200))");
if(!ok)
ui.infoLabel->setText(tr("Table create failed"));
else
ui.infoLabel->setText(tr("Table create success"));
在这里就遇到一个问题了,一开始我对整数型都用int,结果总是返回错误,ok=false
如果我把AUTOINCREMENT给除掉,就成功,明明这个参数在sqlite里面是有的,只有找sqlite支持的数据类型了。sqlite其实是不分什么数据类型的,统统用字符串的形式存储。但是为了与其它数据库统一,可以分成不同的类型,我看到文档里面没有提到int
倒是integer,哈,于是改成integer看看,还真是成功了。还真是奇怪了。我原来是对qt文档里面的例子用的int,结果还给我绕了一个圈。
在qt4下使用sqlite,首先是
添加数据库驱动:
db=QSqlDatabase::addDatabase("QSQLITE");
然后指定用的数据库名字,在sqlite对应的就是数据文件名
db.setDatabaseName(ui.dbFileEdit->text());
接着打开数据库,如果db.open()为true,则成功
下面就可以操作数据库了,在我的程序要首先要打开一个表,如果表不存在的话还要创建。用的是 create table if not exists
QSqlQuery query;
bool ok=query.exec("Create table if not exists money(id INTEGER PRIMARY KEY AUTOINCREMENT ,"
"date VARCHAR(10), type VARCHAR(8), sum FLOAT, tags VARCHAR(200))");
if(!ok)
ui.infoLabel->setText(tr("Table create failed"));
else
ui.infoLabel->setText(tr("Table create success"));
在这里就遇到一个问题了,一开始我对整数型都用int,结果总是返回错误,ok=false
如果我把AUTOINCREMENT给除掉,就成功,明明这个参数在sqlite里面是有的,只有找sqlite支持的数据类型了。sqlite其实是不分什么数据类型的,统统用字符串的形式存储。但是为了与其它数据库统一,可以分成不同的类型,我看到文档里面没有提到int
倒是integer,哈,于是改成integer看看,还真是成功了。还真是奇怪了。我原来是对qt文档里面的例子用的int,结果还给我绕了一个圈。
相关日志:
- » 自己写游戏
- » 读写文件编程
- » 胡喜:我是如何从菜鸟做到架构师的
- » 意外的收获
- » 杂记
收藏:
QQ书签
del.icio.us
订阅:
Google
抓虾
