QT 连接数据库的详细步骤

时间:2021-10-20 07:44:24
QT 连接数据库步骤是本文要介绍的内容,不多说先来看内容。连接数据库需要的头文件: 1. #include <QSqlDatabase> 2. #include <QSqlQuery> 1、连接微软的Access 1. QSqlDatabase ldb = QSqlDatabase::addDatabase("QODBC"); 2. ldb.setDatabaseName("DRIVER={Microsoft Access Driver (*.mdb)};FIL={MS Access};DBQ=system.mdb;UID=;PWD=xiaozhuset"); 3. bool ok = ldb.open(); 4. //新定义一个查询集合,并指定 链接关键字。 如果有多个连接,可以随意指定一个你需要的。 5. QSqlQuery mquery=QSqlQuery::QSqlQuery(ldb); 6. if(ok) 7. { 8. bool isok=mquery.exec("select * from sql_set;"); 9. if (!isok) 10. { 11. ldb.close(); 12. return -1; 13. } 14. //这个是必须的,因为查处的结果集当前位置不在第一条记录上。 15. mquery.next(); 16. QString sHostName=mquery.value(1).toString(); 17. QString sDatabaseName=mquery.value(2).toString(); 18. QString sUserName=mquery.value(3).toString(); 19. QString sPassword=mquery.value(4).toString(); 20. 21. //清除结果集 22. mquery.clear(); 23. // 如果该连接不再使用,就可以关闭。 24. ldb.close(); 25. //这里是将从数据库读出的数据写到一个list控件里 26. ui.list_out->insertItem(ui.list_out->count(),sHostName); 27. ui.list_out->insertItem(ui.list_out->count(),sDatabaseName); 28. } 29. else 30. { 31. // 打开本地数据库失败, 32. QMessageBox::critical(0, QObject::tr("读取Access数据库错误!"),db.lastError().text()); 33. return -1; 34. } 2、连接mssql2000 数据库 1. QString strDatabaseName = QString("DRIVER={SQL Server};Server=(%1);Database=%2").arg("local").arg(sDatabaseName); 2. 3. db=QSqlDatabase::addDatabase("QODBC","db"); // 使用odbc数据库驱动 4. db.setHostName(sHostName); 5. db.setPort(1433); 6. db.setDatabaseName(strDatabaseName); // 我们之前建立的数据库连接关键字 7. db.setUserName(sUserName); 8. db.setPassword(sPassword); 9. bool ok = db.open(); //尝试连接数据库 10. if(ok) 11. { 12. menuset_set->dbdb=db; 13. // 这里用sa已经成功连上数据库 14. return 0; 15. } 16. else 17. { 18. // 打开数据库失败, 19. QMessageBox::critical(0, QObject::tr("数据库连接错误!"),db.lastError().text()); 20. return -2; 21. } 22. mssql2000数据库连接的使用和Access连接使用方法一样。 23. QSqlQuery mquery=QSqlQuery::QSqlQuery(db); 24. bool ok1=mquery.exec("select * from CarteMenu;"); 25. if (ok1==false)return -1; 26. QString menu_mkey=mquery.value(13).toString(); 27. QString strmenu_lang=mquery.value(3).toString(); 28. //清除结果集 29. mquery.clear(); 3、连接mysql 数据库 1. QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL"); // 使用mysql数据库驱动 2. db.setHostName("localhost"); 3. db.setDatabaseName("exampledb"); // 数据库名称 4. db.setUserName("sa"); // 用户名 5. db.setPassword("1"); // 密码 6. bool ok = db.open(); // 尝试连接数据库 7. if(ok) 8. { 9. QSqlQuery myquery; 10. if(myquery.exec("select * from employeedb")) 11. { 12. int num = 0; 13. if(db.driver()->hasFeature(QSqlDriver::QuerySize)) 14. { 15. num = myquery.size(); // 如果支持结果影响的行数,那么直接记录下来 16. } 17. else 18. { 19. myquery.last(); //否则定位到结果最后 20. num = myquery.at() + 1; 21. } 22. //这里添加数据库的查询结果处理操作 23. } 24. else // 如果查询失败 25. { 26. QSqlError error = myquery.lastError(); 27. } 28. } 29. else // 打开数据库失败 30. { 31. }