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,--类型: ...
随机推荐
- 有关hadoop分布式配置详解
linux配置ssh无密码登录 配置ssh无密码登录,先要安装openssh,如下: yum install openssh-clients 准备两台linux服务器或虚拟机,设置两台linux的ho ...
- 然爸读书笔记(2013-5)----Rework(重来)
(1)你没有必要耗尽你一生的积蓄,承担财务风险. (2)你可以一边继续日常工作,一边开始创业,这样随时都能有现金满足需要.你甚至不需要办公室. 现在可以在家工作,和从未见面离你千里之外的人合作. (3 ...
- 实时数据处理环境搭建flume+kafka+storm:2.flume 安装
1. 解压 tar -zxvf 2.配置 拷贝配置文件 :cp flume-conf.properties.template flume-conf.properties ...
- 1030: [JSOI2007]文本生成器 - BZOJ
Description JSOI交给队员ZYX一个任务,编制一个称之为“文本生成器”的电脑软件:该软件的使用者是一些低幼人群,他们现在使用的是GW文本生成器v6版.该软件可以随机生成一些文章―――总是 ...
- PAT-乙级-1033. 旧键盘打字(20)
1033. 旧键盘打字(20) 时间限制 200 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue 旧键盘上坏了几个键,于是在敲一段文 ...
- The 9th Zhejiang Provincial Collegiate Programming Contest->Problem :K-Yet Another Story of Rock-pap
http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3610 题意:一对恋人受到fff团惩罚,需要比剪刀石头布,谁输谁死,出一样都 ...
- linux samba.tar.gz安装和配置
安装步骤: 1. tar -xzvf samba-3.5.10.tar.gz2. cd samba-3.5.103. cd source34. ./autogen.sh 如果出现:./autogen ...
- Qt5官方demo解析集(36个)
http://blog.csdn.net/cloud_castle/article/category/2123873 http://blog.csdn.net/cloud_castle/article ...
- JS选中OPTION
var obj_prov = document.getElementById("prov"); var prov_text = obj_prov.options[obj_prov. ...
- MinHash算法-复杂度待整理
1MinHash简介 传统的hash算法只负责将原始内容尽量均匀随机地映射为一个签名值,原理上相当于伪随机数产生算法.传统hash算法产生的两个签名,如果相等,说明原始内容在一定概率下是相等的:如果不 ...