QtSql
模块提供了许多方法(函数)来帮助您在Qt应用程序中与数据库进行交互。以下是一些常用的QtSql
模块中的方法列表,涵盖了连接、查询、插入、更新、删除和事务等方面的操作。请注意,这里只列出了一些常用的方法,实际上QtSql
模块提供了更多的功能和方法。
数据库连接和设置:
QSqlDatabase::addDatabase()
:添加数据库连接。QSqlDatabase::setDatabaseName()
:设置数据库名称。QSqlDatabase::setUserName()
、QSqlDatabase::setPassword()
:设置连接的用户名和密码。QSqlDatabase::open()
:打开数据库连接。QSqlDatabase::close()
:关闭数据库连接。
执行查询:
QSqlQuery::exec()
:执行SQL查询语句。QSqlQuery::prepare()
:准备SQL查询,但不执行。QSqlQuery::bindValue()
:绑定参数值。QSqlQuery::next()
、QSqlQuery::previous()
、QSqlQuery::first()
、QSqlQuery::last()
:导航查询结果集。
检索数据:
QSqlQuery::value()
:获取查询结果的字段值。QSqlQuery::record()
:获取查询结果的字段信息。
数据插入、更新和删除:
QSqlQuery::insert()
:插入数据。QSqlQuery::update()
:更新数据。QSqlQuery::remove()
:删除数据。
事务管理:
QSqlDatabase::transaction()
:开始事务。QSqlDatabase::commit()
:提交事务。QSqlDatabase::rollback()
:回滚事务。
错误处理:
QSqlQuery::lastError()
:获取最后一个错误。QSqlError::text()
:获取错误消息。
查询元数据和表格信息:
QSqlDatabase::tables()
:获取数据库中的表格列表。QSqlDatabase::record(tableName)
:获取表格的字段信息。
#include <QtSql>
#include <QCoreApplication>
#include <QDebug>
#include <QString>
int main(int argc, char *argv[]) {
QCoreApplication app(argc, argv);
//创建sqlLite数据库并命名
QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
db.setDatabaseName("C:\\Users\\LDT\\Documents\\QCode\\sql_learn\\student.db");
//如果要连接mysql
// QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
// db.setHostName("localhost"); //主机名或者IP地址
// db.setDatabaseName("xxx"); //需要连接的数据库
// db.setUserName("xxx"); //账号
// db.setPassword("xxxxxxx"); //密码
//打开数据库 open,返回值为bool
if (!db.open())
{
qDebug() << "open db is fail!";
return -1;
}
//创建表格
QSqlQuery sq;
if (!sq.exec("CREATE TABLE student (id INTEGER PRIMARY KEY, name TEXT, age INTEGER, sex TEXT)"))
{
qDebug() << "Creat table is fail!";
db.close();
return -1;
}
int age = 20;
//插入3组数据数据
for (int i =0 ; i < 3; i++) {
if (!sq.prepare("INSERT INTO student (name, age, sex) VALUES (:name, :age, :sex)"))
{
qDebug() << "Inster data is fail!";
db.close();
return -1;
}
age +=2;
sq.bindValue(":name", "张三");
sq.bindValue(":age",age);
sq.bindValue(":sex","男");
if (sq.exec())
{
qDebug() << "Inster is successful(exec)!";
}
else {
qDebug() << "Inster is fail(exec)!";
}
}
// 查询数据
if (!sq.exec("SELECT * FROM student")) {
qDebug() << "无法查询数据!";
return 1;
}
while (sq.next()) {
QString name = sq.value(1).toString();
int age = sq.value(2).toInt();
QString sex = sq.value(3).toString();
qDebug() << "name : " << name <<" " << "age : " << age << " " << "sex : " << sex;
}
//更新数据
if (!sq.exec("UPDATE student SET name='李四',sex='女' WHERE age=22"))
{
qDebug() << "Update is fail!" << sq.lastError().text();
db.close();
return -1;
}
//删除数据
if (!sq.exec("DELETE FROM student WHERE age = 24"))
{
qDebug() << "delete is fail!";
db.close();
return -1;
}
// 重新查询数据
if (!sq.exec("SELECT * FROM student")) {
qDebug() << "无法查询数据!";
return 1;
}
while (sq.next()) {
QString name = sq.value(1).toString();
int age = sq.value(2).toInt();
QString sex = sq.value(3).toString();
qDebug() << "name : " << name <<" " << "age : " << age << " " << "sex : " << sex;
}
db.close();
return 0;
}
运行结果: