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

相关内容

热门资讯

如何允许远程连接到MySQL数... [[277004]]【51CTO.com快译】默认情况下,MySQL服务器仅侦听来自localhos...
如何利用交换机和端口设置来管理... 在网络管理中,总是有些人让管理员头疼。下面我们就将介绍一下一个网管员利用交换机以及端口设置等来进行D...
施耐德电气数据中心整体解决方案... 近日,全球能效管理专家施耐德电气正式启动大型体验活动“能效中国行——2012卡车巡展”,作为该活动的...
Windows恶意软件20年“... 在Windows的早期年代,病毒游走于系统之间,偶尔删除文件(但被删除的文件几乎都是可恢复的),并弹...
20个非常棒的扁平设计免费资源 Apple设备的平面图标PSD免费平板UI 平板UI套件24平图标Freen平板UI套件PSD径向平...
德国电信门户网站可实时显示全球... 德国电信周三推出一个门户网站,直观地实时提供其安装在全球各地的传感器网络检测到的网络攻击状况。该网站...
着眼MAC地址,解救无法享受D... 在安装了DHCP服务器的局域网环境中,每一台工作站在上网之前,都要先从DHCP服务器那里享受到地址动...
为啥国人偏爱 Mybatis,... 关于 SQL 和 ORM 的争论,永远都不会终止,我也一直在思考这个问题。昨天又跟群里的小伙伴进行...