QT数据库使用案列【联系人】-- 使用sqlite和QStringListModel
【简要功能介绍】
使用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 = 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(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(0).toInt(); QString name = sql_query.value(1).toString(); int age = sql_query.value(2).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 ();
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。