qt编写sqlite数据库

使用qt开发sqlite应用程序首先要创建添加sqlite链接库,这一步在vs2013中,只需要选择sqlite支持就行了,而在qt creator中创建时,需要编辑

*.pro项目文件添加qt的数据库连接库,而这一步只需在QT后面添加

QT += sql

系统中需要安装的库有一下库

For Maemo SQLite development, the following packages must be installed:

  • libqt4-sql
  • libqt4-sql-sqlite
  • libsqlite3-0
  • libsqlite3-dev


应用程序需要包含一下头文件

#include <QSqlDatabase>
#include <QSqlError>

示例可参考 :Creating an SQLite database in Qt

http://developer.nokia.com/community/wiki/Creating_an_SQLite_database_in_Qt




QSqlDatabase db=QSqlDatabase::addDatabase("QSQLITE");
db.setDatabaseName("mydb");
bool ok=db.open();
qDebug()<<"\n\r"<<ok<<db.lastError().text()<<"\n\r";
QSqlQuery qure(db);
/*qure.exec("create table mytab4(id int PRIMARY KEY ,name text)");
if (!qure.isActive())
{
qDebug()<<"qure.exec error : "<<qure.lastError()<<"\n\r";
return;
}*/
qure.exec("insert into mytab1 values(1,'tt')");
if (!qure.isActive())
{
qDebug()<<"qure.exec error : "<<qure.lastError()<<"\n\r";
return;

}


网上看到一段:添加到vs编译运行可以通过:http://blog.sina.com.cn/s/blog_a6fb6cc90101gx30.html

{
//添加数据库驱动、设置数据库名称、数据库登录用户名、密码
QSqlDatabase database = QSqlDatabase::addDatabase("QSQLITE"); 
database.setDatabaseName("database.db");
database.setUserName("root");  
database.setPassword("123456");


//打开数据库
if(!database.open())
{  
qDebug()<<database.lastError();
qFatal("failed to connect.") ;
}
else
{
//QSqlQuery类提供执行和操作的SQL语句的方法。
//可以用来执行DML(数据操作语言)语句,如SELECT、INSERT、UPDATE、DELETE, 
//以及DDL(数据定义语言)语句,例如CREATE TABLE。
//也可以用来执行那些不是标准的SQL的数据库特定的命令。
QSqlQuery sql_query; 


QString create_sql = "create table student (id int primary key, name varchar(30), age int)";
QString select_max_sql = "select max(id) from student";
QString insert_sql = "insert into student values (?, ?, ?)";
QString update_sql = "update student set name = :name where id = :id";
QString select_sql = "select id, name from student";
QString select_all_sql = "select * from student";
QString delete_sql = "delete from student where id = ?";
QString clear_sql = "delete from student";


sql_query.prepare(create_sql);
if(!sql_query.exec())
{
qDebug()<<sql_query.lastError();
}
else
{
qDebug()<<"table created!";
}


//查询最大id
int max_id = 0;
sql_query.prepare(select_max_sql);
if(!sql_query.exec())
{
qDebug()<<sql_query.lastError();
}
else
{
while(sql_query.next())
{
max_id = sql_query.value(0).toInt();
qDebug()<<QString("max id:%1").arg(max_id);
}
}
//插入数据
sql_query.prepare(insert_sql);
sql_query.addBindValue(max_id+1);
sql_query.addBindValue("name");
sql_query.addBindValue(25);
if(!sql_query.exec())
{
qDebug()<<sql_query.lastError();
}
else
{
qDebug()<<"inserted!";
}


//更新数据
sql_query.prepare(update_sql);
sql_query.bindValue(":name", "Qt");
sql_query.bindValue(":id", 1);
if(!sql_query.exec())
{
qDebug()<<sql_query.lastError();
}
else
{
qDebug()<<"updated!";
}


//查询部分数据
if(!sql_query.exec(select_sql))
{
qDebug()<<sql_query.lastError();
}
else
{
while(sql_query.next())
{
int id = sql_query.value(0).toInt();
QString name = sql_query.value(1).toString();


qDebug()<<QString("id:%1    name:%2").arg(id).arg(name);
}
}


//查询所有数据
sql_query.prepare(select_all_sql);
if(!sql_query.exec())
{
qDebug()<<sql_query.lastError();
}
else
{
while(sql_query.next())
{
int id = sql_query.value(0).toInt();
QString name = sql_query.value(1).toString();
int age = sql_query.value(2).toInt();


qDebug()<<QString("id:%1    name:%2    age:%3").arg(id).arg(name).arg(age);
}
}


//删除数据
sql_query.prepare(delete_sql);
sql_query.addBindValue(max_id);
if(!sql_query.exec())
{
qDebug()<<sql_query.lastError();
}
else
{
qDebug()<<"deleted!";
}


//清空表
sql_query.prepare(clear_sql);
if(!sql_query.exec())
{
qDebug()<<sql_query.lastError();
}
else
{
qDebug()<<"cleared";
}
}


//关闭数据库
database.close();


//删除数据库
QFile::remove("database.db");


}

输出内容为下:

table created! 
"max id:0" 
inserted! 
updated! 
"id:1    name:Qt" 
"id:1    name:Qt    age:25" 
deleted! 
cleared 
线程 'Win32 线程' (0x1288) 已退出,返回值为 0 (0x0)。
线程 'Win32 线程' (0x11cc) 已退出,返回值为 0 (0x0)。
程序“[5912] HuiLiu.exe: 本机”已退出,返回值为 0 (0x0)。

输出结束


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值