zoukankan      html  css  js  c++  java
  • 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 = 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 ();
  • 相关阅读:
    @+id/和android:id的区别
    android.intent.action.MAIN 与 android.intent.category.LAUNCHER 的验证理解
    jQuery对象与dom对象相互转换
    javascript中apply和eval结合的强大用法
    公司项目学习杂烩
    c#(winform,webform通用)利用npoi将xls文件复制为xlsx文件(excel的修改,保存,包括excel2003-office2007+的处理)
    uploadfiy使用
    我都学了些什么
    给编程一个你热爱它的机会
    野心不能成就你,热爱却可以
  • 原文地址:https://www.cnblogs.com/yuliyang/p/4239874.html
Copyright © 2011-2022 走看看