使用Qt SQL库头文件: #include <QtSql> 项目: QT+=sql 常用类QSqlDatabase:数据库的连接打开等操作 QSqlQuery:执行语句,获取结果 QSqlRecord:封装了数据库的所有记录 示例//这里的123和456是为了区分两个数据库的连接QSqlDatabasedatabase_1=QSqlDatabase::addDatabase("QMYSQL", "111"); database_1.setHostName("127.0.0.1");//主机地址 database_1.setDatabaseName("test");//数据库名称 database_1.setUserName("root");//登入数据库使用的用户名 database_1.setPassword("ajdts");//密码 QSqlDatabasedatabase_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); QSqlQueryquery(database_2); QSqlQueryquery(QSqlDatabase::database("222")); QStringsql_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()) { intindex=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(); 数据库类型和连接名QSqlDatabasedatabase_1=QSqlDatabase::addDatabase("QMYSQL", "111"); //根据连接名获取数据库QSqlDatabasedatabase_1=QSqlDatabase::database("123");
执行语句和获取结果QSqlQueryquery(database_2);query.exec(sql_statment);
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()
常见错误QSqlDatabase: QMYSQLdrivernotloadedQSqlDatabase: availabledrivers: QSQLITEQMYSQLQMYSQL3QODBCQODBC3QPSQLQPSQL7 原因: 缺少数据库驱动,若是使用 sqlite 则不需要额外驱动,qt自带;若是其他数据库,还需要安装对应的数据库。 如 mysql,除了qt的 mysql 驱动外,还需要安装 mysql 解决方法:
---------------------------------------------------------------------------------------------------------------------- 我们尊重原创,也注重分享,文章来源于微信公众号:Sherlock的程序人生,建议关注公众号查看原文。如若侵权请联系qter@qter.org。 ---------------------------------------------------------------------------------------------------------------------- |