qt/SQLite

前端之家收集整理的这篇文章主要介绍了qt/SQLite前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

这里主要是针对sqlite的

首先到sqlite官方网站下载:

http://www.sqlite.org/download.html


得到sqlite3.exe。即可.就可以操作数据库,不用安装,不会修改系统信息。

我们在DOS下运行sqlite3.exe的目录运行sqlite3.exe test就可以创建一个名为test的数据库

下面我们就可以创建数据库的表了如:

create table student(id varchar(10),name varchar(20),age smallint);

注意sqlite命令是基于sql的,必须在命令后面加上“;”,否则sqlite会认为一条语句还没有输入完成,总会提示用户输入。

insert into student values('1001','lovesizhao',26);//增加数据库内容

select * from student;//查看student数据库表的所有内容。这个时候会在sqlite3.exe目录得到一个名为test的文件,就是刚刚生成数据库文件

当然这是在DOS操作,我将DOS下操作得到的数据库文件test放到Qt工程目录,在QT控制台程序中读取操作,但是却不能显示中文,不知道为什么。后来改成直接都在QT程序中增加数据库内容,也出现中文乱码,在网上找到答案:

将QT设置编码的地方改为:QTextCodec::setCodecForTr(QTextCodec::codecForLocale()));设置为本地编码,插入数据时对查询语句进行QObject::tr()

(首先应该在.pro文件增加一句:QT += sql)

如下源码:

#include <QtCore/QCoreApplication>

#include <Qtsql>
#include <QTextCodec>
 
int main@H_403_173@(int argc@H_403_173@, char @H_403_173@*argv@H_403_173@[])
@H_403_173@{
    QCoreApplication a@H_403_173@(argc@H_403_173@, argv@H_403_173@);
    QTextCodec@H_403_173@::setCodecForTr@H_403_173@(QTextCodec@H_403_173@::codecForLocale@H_403_173@());
 
    QsqlDatabase dbconn@H_403_173@=QsqlDatabase@H_403_173@::addDatabase@H_403_173@("QsqlITE"@H_403_173@);
    //添加数据库驱动
    dbconn@H_403_173@.setDatabaseName@H_403_173@("mytest.db"@H_403_173@);  //在工程目录新建一个mytest.db的文件
    if@H_403_173@(!dbconn@H_403_173@.open@H_403_173@())
    @H_403_173@{
        qDebug@H_403_173@()<<"fdsfds"@H_403_173@;
    @H_403_173@}
    QsqlQuery query@H_403_173@;//以下执行相关QSL语句
    query@H_403_173@.exec@H_403_173@("create table student(id varchar,name varchar)"@H_403_173@);
    //新建student表,id设置为主键,还有一个name项
    query@H_403_173@.exec@H_403_173@(QObject@H_403_173@::tr@H_403_173@("insert into student values(1,'李刚')"@H_403_173@));
    query@H_403_173@.exec@H_403_173@(QObject@H_403_173@::tr@H_403_173@("insert into student values(2,'苹果')"@H_403_173@));
    query@H_403_173@.exec@H_403_173@(QObject@H_403_173@::tr@H_403_173@("insert into student values(3,'葡萄')"@H_403_173@));
    query@H_403_173@.exec@H_403_173@(QObject@H_403_173@::tr@H_403_173@("insert into student values(3,'李子')"@H_403_173@));
    query@H_403_173@.exec@H_403_173@(QObject@H_403_173@::tr@H_403_173@("insert into student values(4,’橘子')"@H_403_173@));
    query@H_403_173@.exec@H_403_173@(QObject@H_403_173@::tr@H_403_173@("insert into student values(5,'核桃')"@H_403_173@));
    query@H_403_173@.exec@H_403_173@(QObject@H_403_173@::tr@H_403_173@("insert into student values(6,'芒果')"@H_403_173@));
    //query.exec(QObject::tr("select id,name from student where id>=1"));
    query@H_403_173@.exec@H_403_173@("select id,name from student where id>=1"@H_403_173@);
    while@H_403_173@(query@H_403_173@.next@H_403_173@())//query.next()指向查找到的第一条记录,然后每次后移一条记录
    @H_403_173@{
        int ele0@H_403_173@=query@H_403_173@.value@H_403_173@(0@H_403_173@).toInt@H_403_173@();//query.value(0)是id的值,将其转换为int型
        QString ele1@H_403_173@=query@H_403_173@.value@H_403_173@(1@H_403_173@).toString@H_403_173@();
        qDebug@H_403_173@()<<ele0@H_403_173@<<ele1@H_403_173@;//输出两个值
    @H_403_173@}
    query@H_403_173@.exec@H_403_173@(QObject@H_403_173@::tr@H_403_173@("drop student"@H_403_173@));
    return a@H_403_173@.exec@H_403_173@();
@H_403_173@}

(清悠我心:http://hi.baidu.com/清悠我心/home)

猜你在找的Sqlite相关文章