Qt5.6.1、c++、sqlite3数据库

    xiaoxiao2022-07-05  171

    QtSql模块使用数据库驱动来和不同的数据库接口进行通信。

    下载数据库可视化工具 SQLite Expert Personal

    1.qt中可用的数据库插件输出:

    1.在*.pro文件中加入 QT +=sql (没加这句很多与数据库有关的文件不能用) 2.输出可用的驱动的列表: //main.cpp #include <QStringList> #include <QSqlDatabase> #include <QDebug> void main(){ QStringList qlist=QSqlDatabase::drivers(); foreach(QString qlists,qlist) qDebug()<<qlists; } //本例打印出的数据库驱动,它们是QT与对应的数据库通信的桥梁。 //如驱动(QSQLITE)对应数据库(SQLite) //这里重点提一下"SQLite"是一款轻型的文件型数据库。主要应用于嵌入式领域,支持跨平台。

    2.创建数据库连接并打开数据库

    #注意 1.要想使用QSqlQuery或QSqlQueryModel来访问数据库, 先创建并打开一个或多个数据库连接。 2.数据库连接使用连接名来定义,而不是数据库名。 3.QSqlDatabase支持默认连接,也就是一个没有命名的连接。 如果应用程序中只需要有一个数据库连接,默认连接很方便。 //创建一个连接 //main.cpp #include <QSqlDatabase> #include <QDebug> #include <QSqlQuery> int main(int argc, char *argv[]) { QApplication a(argc, argv); //指定该连接使用的数据库驱动,没有设置第二个参数即为默认连接 QSqlDatabase db=QSqlDatabase::addDatabase("QSQLITE"); //创建一个有名字的连接 // QSqlDatabase db1=QSqlDatabase::addDatabase("QSQLITE","connection1"); //设置数据库名。若没有数据库则会创建数据库.(即build****-Debug下没有*.db的数据库文件,则会创建) db.setDatabaseName("mydatabase"); //设置主机名 db.setHostName("compute"); //设置用户名和密码 db.setUserName("asus"); db.setPassword("123456"); //打开数据库 if(db.open()==true) qDebug("yes"); else qDebug("no"); //数据库操作代码 //------- //关闭数据库 db.close(); return 0; } 注意:一个连接只能打开一个数据库,若用相同的连接打开多个数据库, 会出现数据写不进表的情况.

    3.在一个数据库下基本操作 //将下例代码,放到上例我标注的" 数据库操作代码 "

    //用它来对数据库进行操作 QSqlQuery query(db); //建表 后面是SQL语句 query.exec("create table student(id int primary key,name varchar(20))"); //向student表插入数据 query.exec("insert into student values(1,'LiMing')"); //查询student表的所有数据 query.exec("select * from student"); //next()遍历结果集(还有下一个数据吗?是:否) while(query.next()) //将student表的值打印出来 qDebug()<<"id:"<<query.value(0).toString()<<" name:"<<query.value(1).toString()<<"\n"; //删数据 // query.exec("delete from student where id=1 and name='LiMing'"); //更新数据 query.exec("update student set name='af' where id=1");

    4.数据库其它操作方式 //将下例代码,放到上例我标注的" 数据库操作代码 "

    //非固定插入数据。 query.prepare("insert into student values(?, ?)"); query.addBindValue("11"); query.addBindValue("LiLi"); query.exec(); //非固定查询数据 query.prepare("select * from student where id=? and name=?"); query.addBindValue("11"); query.addBindValue("LiLi"); query.exec(); //将查询到的结果打映出来 if(query.next()) qDebug()<<query.value(0).toString()<<" "<<query.value(1).toString();
    最新回复(0)