详解Ubuntu10.10下Qt连接Mysql数据库

来源:互联网 发布:淘宝手机店铺名字大全 编辑:程序博客网 时间:2024/06/07 18:50

需要在ubuntu中用qt连接mysql数据库,在网上找了许多,这篇比较清楚。开始一直出现打不开mydb的情况,应该是由于在mysql中未创建一个“mydb”的文件的缘故(待考证)

 

详解Ubuntu10.10下Qt连接Mysql数据库是本文要介绍的内容,很详细的步骤,我们先来看内容。

第一步:安装qt开发环境

  1. xhy@xhy-desktop:~$sudo apt-get install qt4-dev-tools qt4-doc qt4-qtconfig qt4-demos qt4-designer

第二步:安装mysql开发环境

  1. xhy@xhy-desktop:~$sudo apt-get install mysql-server mysql-client
  2. xhy@xhy-desktop:~$sudo apt-get install libmysqlclient15-dev
  3. xhy@xhy-desktop:~$sudo apt-get install libqt4-sql-mysql
  4. xhy@xhy-desktop:~$sudo /etc/init.d/mysql restart

第三步:给普通用户授权操作数据库

  1. xhy@xhy-desktop:~$ mysql -u root -p (root登录数据库)
  2. mysql> create database mydb; (创建一个数据库)
  3. mysql> grant all privileges on *.* to username@localhost identified by 'password';
  4. mysql> quit;

给特定用户分配数据操作权限的格式是:

grant 权限1,权限2,...权限n on 数据库名称.表名称 to 用户名@用户ip地址 identified by '密码';

第四步:测试环境

  1. #include <QApplication>
  2. #include <QtSql>
  3. #include <QTableView>
  4. #include <iostream>
  5. using namespace std;
  6. int main(int argc, char *argv[])
  7. {
  8. QApplication app(argc, argv);
  9. QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
  10. db.setHostName("localhost");
  11. db.setDatabaseName("mydb");
  12. db.setUserName("username");
  13. db.setPassword("password");
  14. db.open();
  15. QSqlQuery query;
  16. query.exec("create table hello(id bigint not null auto_increment,name varchar(255),age bigint,primary key (id))");
  17. /*query.exec("insert into hello(name, age) values('xiaoxi', 18)");
  18. query.exec("insert into hello(name, age) values('xiaonan', 19)");
  19. query.exec("insert into hello(name, age) values('xiaobei', 20)");
  20. query.exec("insert into hello(name, age) values('xiaodong', 21)");*/
  21. //ODBC风格
  22. query.prepare("insert into hello(name, age)" "values(?, ?)");
  23. query.addBindValue("xiaoxi");
  24. query.addBindValue(18);
  25. query.exec();
  26. query.addBindValue("xiaonan");
  27. query.addBindValue(19);
  28. query.exec();
  29. query.addBindValue("xiaobei");
  30. query.addBindValue(20);
  31. query.exec();
  32. query.addBindValue("xiaodong");
  33. query.addBindValue(21);
  34. query.exec();
  35. //Oracle风格
  36. /*query.prepare("insert into hello(name, age) values(:name, :age)");
  37. query.bindValue(":name", "xiaoxi");
  38. query.bindValue(":age", 18);
  39. query.exec();
  40. query.bindValue(":name", "xiaonan");
  41. query.bindValue(":age", 19);
  42. query.exec();
  43. query.bindValue(":name", "xiaobei");
  44. query.bindValue(":age", 20);
  45. query.exec();
  46. query.bindValue(":name", "xiaodong");
  47. query.bindValue(":age", 21);
  48. query.exec();*/
  49. QSqlQueryModel *model = new QSqlQueryModel;
  50. model->setQuery("select * from hello");
  51. model->setHeaderData(0, Qt::Horizontal, "id");
  52. model->setHeaderData(1, Qt::Horizontal, "name");
  53. model->setHeaderData(2, Qt::Horizontal, "age");
  54. QTableView *view = new QTableView;
  55. view->setWindowTitle("QSqlQueryModel");
  56. view->setModel(model);
  57. view->show();
  58. /*QSqlTableModel *model = new QSqlTableModel;
  59. model->setTable("hello");
  60. model->select();
  61. for (int i = 0; i < model->rowCount(); ++i)
  62. {
  63. QSqlRecord record = model->record(i);
  64. int id = record.value(0).toInt();
  65. QString name = record.value(1).toString();
  66. int age = record.value(2).toInt();
  67. cout << id << " " << qPrintable(name) << " " << age << endl;
  68. }*/
  69. db.close();
  70. return app.exec();
  71. }

编译:

  1. xhy@xhy-desktop:~$ qmake -project
  2. xhy@xhy-desktop:~$ qmake

一定别忘了在工程的.pro文件里加上下面一行:

  1. QT += sql
  2. xhy@xhy-desktop:~$make
  3. xhy@xhy-desktop:~$./mysql

小结:关于详解Ubuntu 10.10下Qt连接Mysql数据库的内容介绍完了,希望本文对你有所帮助!http://mobile.51cto.com/symbian-273262.htm

原创粉丝点击