详解Ubuntu10.10下Qt连接Mysql数据库
创始人
2024-08-02 13:31:47
0

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

编译:

  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数据库的内容介绍完了,希望本文对你有所帮助!

相关内容

热门资讯

PHP新手之PHP入门 PHP是一种易于学习和使用的服务器端脚本语言。只需要很少的编程知识你就能使用PHP建立一个真正交互的...
网络中立的未来 网络中立性是什... 《牛津词典》中对“网络中立”的解释是“电信运营商应秉持的一种原则,即不考虑来源地提供所有内容和应用的...
各种千兆交换机的数据接口类型详... 千兆交换机有很多值得学习的地方,这里我们主要介绍各种千兆交换机的数据接口类型,作为局域网的主要连接设...
什么是大数据安全 什么是大数据... 在《为什么需要大数据安全分析》一文中,我们已经阐述了一个重要观点,即:安全要素信息呈现出大数据的特征...
如何允许远程连接到MySQL数... [[277004]]【51CTO.com快译】默认情况下,MySQL服务器仅侦听来自localhos...
如何利用交换机和端口设置来管理... 在网络管理中,总是有些人让管理员头疼。下面我们就将介绍一下一个网管员利用交换机以及端口设置等来进行D...
P2P的自白|我不生产内容,我... 现在一提起P2P,人们就会联想到正在被有关部门“围剿”的互联网理财服务。×租宝事件使得劳...
Intel将Moblin社区控... 本周二,非营利机构Linux基金会宣布,他们将担负起Moblin社区的管理工作,而这之前,Mobli...
施耐德电气数据中心整体解决方案... 近日,全球能效管理专家施耐德电气正式启动大型体验活动“能效中国行——2012卡车巡展”,作为该活动的...
Windows恶意软件20年“... 在Windows的早期年代,病毒游走于系统之间,偶尔删除文件(但被删除的文件几乎都是可恢复的),并弹...