赞
踩
SQLite是一个进程内的轻量级嵌入式数据库,它的数据库就是一个文件,实现了自给自足、无服务器、零配置的、事务性的SQL数据库引擎。它是一个零配置的数据库,这就体现出来SQLite与其他数据库的最大的区别:SQLite不需要在系统中配置,直接可以使用。且SQLite不是一个独立的进程,可以按应用程序需求进行静态或动态连接。SQLite可直接访问其存储文件。
SQLite对于其他数据库有什么优势:
不需要配置,不需要安装和管理
不需要一个单独的服务器进程或操作的系统(无服务器的)
一个完整的SQLite数据库存储在一个单一的跨平台的磁盘文件上
SQLite是非常小的,轻量级的数据库,完全配置时小于400KiB,省略可选功能配置时小于250KiB
SQLite是一个自给自足的数据库,这也就意味着不需要任何外部的依赖
首先在项目中的后缀为.pro文件中加入QT += sql //数据库模块
接着在要使用的.h文件中加入一下头文件
- #include <QSqlDatabase>
- #include <QSqlQuery>
- #include <QSqlDriver>
- #include <QSqlRecord>
- #include <QSqlError>
然后就可以使用sql的接口函数了
为了方便多个文件调用使用访问数据库,可以对数据库的使用进行封装:
- bool MainWindow::create_open_database()
- {
- //数据库类型QSQLITE
- db=QSqlDatabase::addDatabase("QSQLITE");
- //设备编号-“easybook-3313b0”
- db.setHostName("easybook-3313b0");
- //数据库的文件名字
- db.setDatabaseName("MyDataBase.db");
- //数据库用户名
- db.setUserName("jons");
- //数据库密码
- db.setPassword("123123");
- //判断是否成功打开
- if(!db.open())
- {
- qDebug()<<"open database is error!";
- return false;
-
- }else
- return true;
- }

- bool MainWindow::create_open_database()
- {
- if (QSqlDatabase::contains("easybook-3313b0"))
- {
- db = QSqlDatabase::database("easybook-3313b0");
- }
- else
- {
- //建立和SQlite数据库的连接
- db = QSqlDatabase::addDatabase("QSQLITE");
- db.setHostName("easybook-3313b0");
- //设置数据库文件的名字
- db.setDatabaseName("MyDataBase.db");
- db.setUserName("jons");
- db.setPassword("123123");
- }
- if(!db.open())
- {
- qDebug()<<"open database is error!";
- return false;
-
- }else
- return true;
- }

- bool MainWindow::create_tabel()
- {
- QSqlQuery query(db);
- bool success = query.exec("create table student(id int primary key,name varchar,sex varchar,address int)");
- if(success)
- qDebug()<<"create student tabel is success!";
- else
- qDebug()<<"create student tabel is error!";
- query.exec("select * from student");
- QSqlRecord rec = query.record();
- qDebug()<<"student 的表字段数"<<rec.count();
- }
- //插入:
- bool MainWindow::insert_data()
- {
- bool success;
- QSqlQuery query(db);
- query.prepare("insert into student values(?,?,?,?)");
- query.bindValue(0,select_tablecount());
- query.bindValue(1,ui->lineEdit->text());
- query.bindValue(2,ui->lineEdit_2->text());
- query.bindValue(3,ui->lineEdit_3->text());
- success=query.exec();
- if(success)
- qDebug()<<"insert student msg is success!";
- else
- qDebug()<<"insert student msg is error!"<<query.lastError().driverText();
- }
- //删除:
- bool MainWindow::detele_tablemag()
- {
- QSqlQuery query(db);
- query.exec(QString("delete from student where address=%1" ).arg(ui->lineEdit_5->text()));
- if(!query.exec())
- qDebug()<<"delete student msg is error!"<<query.lastError();
- else
- qDebug()<<"delete student msg is success";
- }
-
- //修改:
- bool MainWindow::update_tablemsg()
- {
- bool success;
- QSqlQuery query(db);
- query.prepare(QString("update student set name=?,sex=?,address=? where address =%1").arg(ui->lineEdit_4->text()));
- query.bindValue(0,ui->lineEdit->text());
- query.bindValue(1,ui->lineEdit_2->text());
- query.bindValue(2,ui->lineEdit_3->text());
- success=query.exec();
- if(success)
- qDebug()<<"update student msg is success!";
- else
- qDebug()<<"update student msg is error!"<<query.lastError().driverText();
- }
- //查询:
- bool MainWindow::select_tablemsg()
- {
- QSqlQuery query(db);
- query.exec("select * from student");
- if(!query.exec())
- qDebug()<<"select student msg is error!"<<query.lastError();
- else
- {
- while(query.next())
- {
- int id =query.value(0).toInt();
- QString name=query.value(1).toString();
- QString sex=query.value(2).toString();
- int address=query.value(3).toInt();
- ui->listWidget->addItem(QString("id%1 name:%2 sex:%3 address%4").arg(id).arg(name).arg(sex).arg(address));
- }
- }
- //其他:
- //排序:
- bool MainWindow::table_sort()
- {
- QSqlQuery query(db);
- query.exec("select * from student order by id desc");
- }
- //查询数据表的行数:
- int MainWindow::select_tablecount()
- {
- int count=0;
- QSqlQuery query(db);
- query.exec("select * from student");
- if(!query.exec())
- {
- qDebug()<<"select student msg is error!"<<query.lastError();
- }
- else
- {
- while(query.next())
- {
- count++;
- }
- }
- return count;
- }

最后:案例源码
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。