QT连接数据库步骤:
1.使用QSqlDatabase连接数据库:
//数据库连接函数
QSqlError ConnDlg::addConnection(const QString &driver, const QString
&dbName, const QString &host, const QString &user,
const QString &passwd, int port)
{
//QSqlError 对象,里面保存数据库相关错误信息
QSqlError err;
//根据数据库驱动获取相应的数据库对象
QSqlDatabase db = QSqlDatabase::addDatabase(driver);
//设置要访问的数据库名称
db.setDatabaseName(dbName);
//设置要访问的数据库主机名
db.setHostName(host);
//设置要访问的数据库端口
db.setPort(port);
//使用账号和密码打开数据库
if(!db.open(user,passwd))
{
//如果打开数据库失败,则获取失败详细信息。
err = db.lastError();
}
return err;
}
2.操作数据库
使用QSqlQuery操作数据库
//创建QSqlQuery 对象,使用的是默认连接
QSqlQuery query;
//通过QSqlQuery 对象执行SQL语句,并取得执行结果
bool result = query.exec("create table cars
(carid int primary key,name varchar(50),factoryid int ,year int)");
if(!result)
{
//输出错误信息
qDebug() << query.lastError().text();
}
//执行插入语句,静态插入
query.exec(QStringLiteral("insert into cars values(1,'奥迪A6',1,2005)"));
//通过使用占位符 动态插入一行数据
query.prepare("insert into cars VALUES (:id, :forename, :type,:year)");
query.bindValue(":id", 9);
query.bindValue(":forename", "Bart");
query.bindValue(":type", 3);
query.bindValue(":year", "2019");
query.exec();
//动态的sql删除语句
query.prepare("delete from cars where name = ?");
query.bindValue(0, QStringLiteral("毕加索"));
query.exec();
//静态的sql更新语句
QString sqlStr = QStringLiteral("update cars set name = '修改值' \
where carid = 2");
//执行sql语句
query.exec(sqlStr);
//执行sql查询语句
query.exec("select * from cars");
//遍历查询结果
while(query.next())
{
//通过字段名或者字段索引输出查询结果
qDebug()<< query.value("carid").toInt()
<< query.value("name").toString()
<< query.value("factoryid").toInt()
<< query.value("year").toInt();
qDebug()<< query.value(0).toInt()
<< query.value(1).toString()
<< query.value(2).toInt()
<< query.value(3).toInt();
}