学习C++跨平台库QT:掌握嵌入式数据库SQLite的使用
发表时间: 2020-08-10 22:51
SQLite是一个轻量级的嵌入型数据库,不需要服务端,可以运行在很多资源非常小的嵌入式系统中。
SQLite的管理客户端,可以使用:
等。
修改.pro文件:
QT += sql
引用的头文件:
#include <QSql>#include <QSqlDatabase>#include <QSqlQuery>#include <QSqlError>
qDebug() << QSqlDatabase::drivers();
我的电脑输出的值有:
("QSQLITE", "QODBC", "QODBC3", "QPSQL", "QPSQL7")
里面的QSQLITE表示支持SQLite数据库。
//建立并打开数据库 QSqlDatabase database; database = QSqlDatabase::addDatabase("QSQLITE"); database.setDatabaseName("test.db"); if (!database.open()) { qDebug() << "Error: Failed to connect database." << database.lastError(); } else { qDebug() << "Succeed to connect database." ; }
//创建表格 QSqlQuery sql_query; if(!sql_query.exec("create table users(id int primary key, name text, age int)")) { qDebug() << "Error: Fail to create table."<< sql_query.lastError(); } else { qDebug() << "Table created!"; }
if(!sql_query.exec("INSERT INTO users VALUES(1, \"张三\", 30)")) { qDebug() << sql_query.lastError(); } else { qDebug() << "inserted success!"; } if(!sql_query.exec("INSERT INTO users VALUES(2, \"李四\", 30)")) { qDebug() << sql_query.lastError(); } else { qDebug() << "inserted success!"; }
//查询数据 sql_query.exec("select * from users"); if(!sql_query.exec()) { qDebug()<<sql_query.lastError(); } else { 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(); qDebug()<<QString("id:%1 name:%2 age:%3").arg(id).arg(name).arg(age); } }
sql_query.exec("delete from users where id = 1"); if(!sql_query.exec()) { qDebug()<<sql_query.lastError(); } else { qDebug()<<"deleted!"; }
sql_query.exec("update users set name = \"myname\" where id = 1"); if(!sql_query.exec()) { qDebug() << sql_query.lastError(); } else { qDebug() << "updated!"; }
sql_query.exec("drop table users"); if(sql_query.exec()) { qDebug() << sql_query.lastError(); } else { qDebug() << "table droped"; }
database.close();
运行效果:会自动生成一个test.db数据库文件。