QT数据库使用案列【联系人】-- 使用sqlite和QStringListModel
【关于如何打包自己开发的程序为安装包,可以参考http://www.cnblogs.com/yuliyang/p/4242179.html】
【简要功能介绍】
使用sqlite数据库和Qt搭建界面,实现联系人数据库记录。联系人有id编号,姓名,年龄.可对联系人
【表增加联系人】
【删除联系人】
【更新联系人信息】
【显示全部联系人信息】
【运行界面】

【源码下载】【http://pan.baidu.com/s/1o6OGley】
使用sqlitebrowser 查看

【初始化数据库】
QLibrary sqlib("./sqldrivers/qsqlited.dll");
sqlib.load ();
qDebug()<<"my library loaded"<<sqlib.isLoaded();
db = QSqlDatabase::addDatabase("QSQLITE","SQLITE");
#ifdef Q_OS_LINUX
QString path(QDir::home().path());
path.append(QDir::separator()).append("my.db.sqlite");
path = QDir::toNativeSeparators(path);
db.setDatabaseName(path);
#else
db.setDatabaseName("my.db.sqlite");
#endif
/*
* create my.db.sqlite file if not exist
*/
db.open ();
db.close ();
【创建表】
if(db.open ()){
sql_query = QSqlQuery (db);
sql_query.prepare(create_sql);
if(!sql_query.exec())
{
qDebug()<<sql_query.lastError();
}
else
{
qDebug()<<"table created!";
}
}
updateDataBaseShow();
【插入记录】
if(db.open ()){
sql_query = QSqlQuery (db);
int max_id = ;
sql_query.prepare(select_max_sql);
if(!sql_query.exec())
{
qDebug()<<sql_query.lastError();
}
else
{
while(sql_query.next())
{
max_id = sql_query.value().toInt();
qDebug()<<QString("max id:%1").arg(max_id);
}
}
sql_query.prepare(insert_sql);
sql_query.addBindValue(max_id+);
sql_query.addBindValue(ui->lineEdit_name->text ());
sql_query.addBindValue(ui->lineEdit_age->text ().toInt ());
if(!sql_query.exec())
{
qDebug()<<sql_query.lastError();
}
else
{
qDebug()<<"inserted!";
}
updateDataBaseShow();
}
【显示全部数据(两列,id和name)】
if(db.open ()){
sql_query = QSqlQuery (db);
if(!sql_query.exec(select_sql))
{
qDebug()<<sql_query.lastError();
}
else
{
while(sql_query.next())
{
int id = sql_query.value("id").toInt();
QString name = sql_query.value("name").toString();
qDebug()<<QString("id:%1 name:%2").arg(id).arg(name);
}
}
}
【显示全部数据】
if(db.open ()){
sql_query = QSqlQuery (db);
sql_query.prepare(select_all_sql);
if(!sql_query.exec())
{
qDebug()<<sql_query.lastError();
}
else
{
ui->textEdit->clear ();
while(sql_query.next())
{
int id = sql_query.value().toInt();
QString name = sql_query.value().toString();
int age = sql_query.value().toInt();
ui->textEdit->append (QString("id:%1 name:%2 age:%3").arg(id).arg(name).arg(age));
qDebug()<<QString("id:%1 name:%2 age:%3").arg(id).arg(name).arg(age);
}
}
}
【清除表】
if(db.open ()){
sql_query = QSqlQuery (db);
sql_query.prepare(clear_sql);
if(!sql_query.exec())
{
qDebug()<<sql_query.lastError();
}
else
{
qDebug()<<"cleared";
}
}
updateDataBaseShow();
【删除一条记录】combobox选中的记录删除

if(db.open ()){
sql_query = QSqlQuery (db);
sql_query.prepare(delete_sql);
sql_query.addBindValue(ui->comboBox->currentText ().toInt ());
if(!sql_query.exec())
{
qDebug()<<sql_query.lastError();
}
else
{
qDebug()<<"deleted!";
}
}
updateDataBaseShow();
【更新联系人信息】
if(db.open ()){
sql_query = QSqlQuery (db);
sql_query.prepare("update student set name = :name ,age = :age where id = :id");
sql_query.bindValue(":name", ui->lineEdit_name->text ());
sql_query.bindValue(":age", ui->lineEdit_age->text ());
sql_query.bindValue(":id", ui->comboBox->currentText ().toInt ());
if(!sql_query.exec())
{
qDebug()<<sql_query.lastError();
}
else
{
qDebug()<<"updated!";
}
}
updateDataBaseShow();
【删除数据库】
#ifdef Q_OS_LINUX
QString path(QDir::home().path());
path.append(QDir::separator()).append("my.db.sqlite");
path = QDir::toNativeSeparators(path);
QFile::remove(path);
#else
QFile::remove("my.db.sqlite");
#endif
ui->comboBox->clear ();
ui->textEdit->clear ();
QT数据库使用案列【联系人】-- 使用sqlite和QStringListModel的更多相关文章
- 用Access为支撑,书写一个用C#写入数据库的案列
/// <summary> /// 读取Excel文档 /// </summary> /// <param name="Path">文件名称&l ...
- linux下mysql函数的详细案列
MYSQL * STDCALL mysql_real_connect(MYSQL *mysql, const char *host, const char *user, const char *pas ...
- qt数据库多线程问题的解决(QSqlDatabase只能在创建它的线程中使用)
Qt数据库由QSqlDatabase::addDatabase()生成的QSqlDatabase只能在创建它的线程中使用, 在多线程中共用连接或者在另外一个线程中创建query都是不支持的几乎国内没有 ...
- 大数据技术之_14_Oozie学习_Oozie 的简介+Oozie 的功能模块介绍+Oozie 的部署+Oozie 的使用案列
第1章 Oozie 的简介第2章 Oozie 的功能模块介绍2.1 模块2.2 常用节点第3章 Oozie 的部署3.1 部署 Hadoop(CDH版本的)3.1.1 解压缩 CDH 版本的 hado ...
- Qt添加驱动——Qt数据库之添加MySQL驱动插件
Qt数据库之添加MySQL驱动插件(1) 现在可用的数据库驱动只有3种,在Qt中,我们需要自己编译其他数据库驱动的代码,让它们以插件的形式来使用.下面我们就以现在比较流行的MySQL数据库为例,说明一 ...
- Qt数据库_资料
1. QT笔记_数据库总结(一)-rojian-ChinaUnix博客.html http://blog.chinaunix.net/uid-28194872-id-3631462.html (里面有 ...
- Qt数据库 QSqlTableModel实例操作(转)
本文介绍的是Qt数据库 QSqlTableModel实例操作,详细操作请先来看内容.与上篇内容衔接着,不顾本文也有关于上篇内容的链接. Qt数据库 QSqlTableModel实例操作是本文所介绍的内 ...
- C/C++ Qt 数据库与TableView多组件联动
Qt 数据库组件与TableView组件实现联动,以下案例中实现了,当用户点击并选中TableView组件内的某一行时,我们通过该行中的name字段查询并将查询结果关联到ListView组件内,同时将 ...
- 在SQL2008查找某数据库中的列是否存在某个值
在SQL2008查找某数据库中的列是否存在某个值 --SQL2008查找某数据库中的列是否存在某个值 create proc spFind_Column_In_DB ( @type int,--类型: ...
随机推荐
- bnuoj 1071 拼图++(BFS+康拓展开)
http://www.bnuoj.com/bnuoj/problem_show.php?pid=1071 [题意]:经过四个点的顺逆时针旋转,得到最终拼图 [题解]:康拓展开+BFS,注意先预处理,得 ...
- 2337:[HNOI2011]XOR和路径 - BZOJ
昨天才做了一道高斯消元,一下要精度判断,一下又不要精度判断 主要是思路很重要 很容易想到每一个二进制位算一个概率,然后求和,设f[i]为走到从i走到n这一个二进制位为1的概率 f[i]:=∑{f[j] ...
- Nagios3完整配置文档
第一章:简单快速安装nagios 1.1 准备软件包 在做安装之前确认要对该机器拥有root权限. 确认你安装好的linux系统上已经安装如下软件包再继续. Apache GCC编译器 GD库与开发库 ...
- 可以继承的C++ Singleton基类
单例模式(Singleton Pattern)是设计模式中的一种,它用来保证系统中最多只能存在一个它的实例,其做法是由类自身来创建和持有它的对象实例,把对实例的创建权和管理权都控制在自己手中,以便控制 ...
- C++: 单例模式和缺陷
C++: 单例模式和缺陷 实现一个单例模式 1 class Singleton { 2 private: 3 Singleton() { cout << " ...
- C#基础精华07(委托事件,委托的使用,匿名方法)
1.委托概述 委托是一种数据类型,像类一样(可以声明委托类型变量).方法参数可以是int.string.类类型 void M1(int n){ } √ void M2(string s){ } √ ...
- java socket nio编程
上次写了一个socket的基本编程,但是有个问题,阻塞特别严重,于是小编便去找了nio学习了一下... public class TimeServer { public static void mai ...
- 在Ubuntu 12.04安装和设置SSH服务
1.安装 Ubuntu缺省安装了openssh-client,所以在这里就不安装了,如果你的系统没有安装的话,再用apt-get安装上即可. 安装ssh-server sudo apt-get ins ...
- linux下tar压缩/解压的使用(tar) 压缩/解压
压缩: tar -zcvf 压缩后文件名.tar.gz 被压缩文件 解压: tar -zxvf 被解压文件 具体的可以在linux环境下 用 tar --help 查看详细说明格式:ta ...
- Unity NGUI弧形血条的制作
unity版本:4.6 NGUI版本:3.6. (转载请注明参考链接及作者) 参考链接:http://www.cnblogs.com/louissong/p/3841656.html,作者:博客园 L ...