这里主要是针对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()
如下源码:
#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)