头文件:
#include <QtSql>
项目:
QT += sql
QSqlDatabase:数据库的连接打开等操作
QSqlQuery:执行语句,获取结果
QSqlRecord:封装了数据库的所有记录
//这里的123和456是为了区分两个数据库的连接
QSqlDatabase database_1 = QSqlDatabase::addDatabase("QMYSQL", "111");
database_1.setHostName("127.0.0.1");//主机地址
database_1.setDatabaseName("test"); //数据库名称
database_1.setUserName("root"); //登入数据库使用的用户名
database_1.setPassword("ajdts"); //密码
QSqlDatabase database_2 = QSqlDatabase::addDatabase("QMYSQL", "222");
database_2.setHostName("127.0.0.1");
database_2.setDatabaseName("test_2");
database_2.setUserName("root");
database_2.setPassword("ajdts");
database_1.open()//打开数据库
database_2.open()
//QSqlQuery query(database_1);
QSqlQuery query(database_2);
QSqlQuery query(QSqlDatabase::database("222"));
QString sql_statment = QString("select name from table_1 where id=1;");
if(!query.exec(sql_statment))
{
qDebug()<<"exec fail"<<query.lastError().text();
return;
}
qDebug()<<"Size:"<<query.size();
while(query.next())
{
int index = query.record().indexOf("name");
qDebug()<<query.value(index).toString();
}
//插入数据
sql_statment = QString("insert into table_1 (`name`, `price`) value (?, ?);");
query.prepare(sql_statment)
query.addBindValue("abc");
query.addBindValue(123.45);
query.exec()
database_1.close(); //关闭数据库
database_2.close();
QSqlDatabase database_1 = QSqlDatabase::addDatabase("QMYSQL", "111");
//根据连接名获取数据库
QSqlDatabase database_1 = QSqlDatabase::database("123");
QSqlQuery query(database_2);
query.exec(sql_statment);
根据数据库获取query对象;
使用 exec() 方法执行语句
query.next();//获取结果集前需要使用 next() 方法;
query.size();//结果的数量
int index = query.record().indexOf("name"); //获取名称在结果中的下标
qDebug()<<query.value(index).toString(); //根据下表获取结果
qDebug()<<query.value("name").toString(); //根据名称获取结果
sql_statment = QString("insert into table_1 (`name`, `price`) value (?, ?);");
query.prepare(sql_statment)
query.addBindValue("abc");
query.addBindValue(123.45);
query.exec()
插入数据可以直接拼接sql语句,也可以使用上面占位符的方法;
QSqlDatabase: QMYSQL driver not loaded
QSqlDatabase: available drivers: QSQLITE QMYSQL QMYSQL3 QODBC QODBC3 QPSQL QPSQL7
原因:
缺少数据库驱动,若是使用 sqlite 则不需要额外驱动,qt自带;若是其他数据库,还需要安装对应的数据库。
如 mysql,除了qt的 mysql 驱动外,还需要安装 mysql
解决方法:
手机扫一扫
移动阅读更方便
你可能感兴趣的文章