测试windows 下 Socket+Mysql调用。

环境:

OS:Win7; DBMS:Mysql;  IDE:codeblockS.

server:

  1. #include <WINSOCK2.H>
  2. #include <stdio.h>
  3. #include <mysql.h>
  4. /*数据库连接用宏*/
  5. #define HOST "localhost"//本地
  6. #define USERNAME "root"//dbms user name
  7. #define PASSWORD "123456"//password
  8. #define DATABASE "test"//database name
  9. #pragma comment(lib,"ws2_32.lib")
  10. #pragma comment(lib,"C:\\Program Files\\MySQL\\MySQL Server 5.5\\lib\\libmysql.lib")
  11. void query_sql(char* sql);//数据库查询
  12. int main(int argc,char **argv)
  13. {
  14. WORD myVersionRequest;
  15. WSADATA wsaData;
  16. int err;
  17. SOCKET serSocket;
  18. SOCKADDR_IN addr;
  19. int len;
  20. SOCKADDR_IN clientsocket;
  21. SOCKET serConn;
  22. char sendBuf[];
  23. char receiveBuf[];//接收
  24. char *query;
  25. query="select * from serverinfo";//查询学生表
  26.  
  27. myVersionRequest=MAKEWORD(,);
  28. err=WSAStartup(myVersionRequest,&wsaData);
  29. if (!err)
  30. {
  31. printf("已打开套接字,等待连接!\n");
  32. }
  33. else
  34. {
  35. printf("ERROR:嵌套字未打开!");
  36. return ;
  37. }
  38. //进一步绑定套接字
  39. serSocket=socket(AF_INET,SOCK_STREAM,);//创建了可识别套接字
  40.  
  41. //需要绑定的参数
  42. addr.sin_family=AF_INET;
  43. addr.sin_addr.S_un.S_addr=htonl(INADDR_ANY);//ip地址
  44. addr.sin_port=htons();//绑定端口
  45.  
  46. bind(serSocket,(SOCKADDR*)&addr,sizeof(SOCKADDR));//绑定完成
  47. listen(serSocket,);//其中第二个参数代表能够接收的最多的连接数
  48.  
  49. //////////////////////////////////////////////////////////////////////////
  50. //开始进行监听
  51. //////////////////////////////////////////////////////////////////////////
  52.  
  53. len=sizeof(SOCKADDR);
  54. while ()
  55. {
  56. query_sql(query);//仅用于测试,没有写客户端,所以在阻塞之前对数据库进行调用
  57. serConn=accept(serSocket,(SOCKADDR*)&clientsocket,&len);//如果这里不是accept而是conection的话。。就会不断的监听
  58.  
  59. sprintf(sendBuf,"hello, %s !",inet_ntoa(clientsocket.sin_addr));//找对对应的IP并且将这行字打印到那里
  60. printf("Send:%s\n",sendBuf);
  61. send(serConn,sendBuf,strlen(sendBuf)+,);
  62.  
  63. recv(serConn,receiveBuf,sizeof(receiveBuf),);
  64. printf("recv:%s\n",receiveBuf);
  65.  
  66. closesocket(serConn);//关闭
  67. WSACleanup();//释放资源的操作
  68. return ;
  69. }
  70. return ;
  71. }
  72. void query_sql(char* sql)
  73. {
  74. MYSQL my_connection; /*这是一个数据库连接*/
  75. int res; /*执行sql語句后的返回标志*/
  76. MYSQL_RES *res_ptr; /*指向查询结果的指针*/
  77. MYSQL_FIELD *field; /*字段结构指针*/
  78. MYSQL_ROW result_row; /*按行返回的查询信息*/
  79. int row, column; /*查询返回的行数和列数*/
  80. int i, j;
  81. /*初始化mysql连接my_connection*/
  82. mysql_init(&my_connection);
  83. /*建立mysql连接*/
  84. if (NULL != mysql_real_connect(&my_connection, HOST, USERNAME, PASSWORD,
  85. DATABASE, , NULL, CLIENT_FOUND_ROWS)) /*连接成功*/
  86. {
  87. printf("数据库查询query_sql连接成功!\n");
  88. /*设置查询编码为gbk,以支持中文*/
  89. mysql_query(&my_connection, "set names gbk");
  90. res = mysql_query(&my_connection, sql);
  91. if (res) /*执行失败*/
  92. {
  93. printf("Error: mysql_query !\n");
  94. /*关闭连接*/
  95. mysql_close(&my_connection);
  96. }
  97. else /*现在就代表执行成功了*/
  98. {
  99. /*将查询的結果给res_ptr*/
  100. res_ptr = mysql_store_result(&my_connection);
  101. /*如果结果不为空,就把结果print*/
  102. if (res_ptr)
  103. {
  104. /*取得結果的行数和*/
  105. column = mysql_num_fields(res_ptr);
  106. row = mysql_num_rows(res_ptr);
  107. printf("查询到 %d 行 \n", row);
  108. /*输出結果的字段名*/
  109. for (i = ; field = mysql_fetch_field(res_ptr); i++)
  110. printf("%10s ", field->name);
  111. printf("\n");
  112. /*按行输出結果*/
  113. for (i = ; i < row+; i++)
  114. {
  115. result_row = mysql_fetch_row(res_ptr);
  116. for (j = ; j < column; j++)
  117. printf("%10s ", result_row[j]);
  118. printf("\n");
  119. }
  120. }
  121. /*不要忘了关闭连接*/
  122. mysql_close(&my_connection);
  123. }
  124. }
  125. else
  126. {
  127. printf("数据库连接失败");
  128. }
  129. }

socket+mysql的更多相关文章

  1. PHP连接MySQL报错:SQLSTATE[HY000] [2002] Can't connect to local MySQL server through socket 'MySQL' (2)

    如下所示,PHP连接MySQL报错: SQLSTATE[HY000] [2002] Can't connect to local MySQL server through socket 'MySQL' ...

  2. Mac mySql ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)的解决办法

    我的环境:Mac 10.11.6 ,mysql  5.7.14  . mac mySql 报错ERROR 2002 (HY000): Can't connect to local MySQL serv ...

  3. tomcat通过socket连接MySQL,不再占用服务端口【linux】

    MySQL连接方式的说明 http://icbm.iteye.com/blog/1840673 MySQL除了最常见的TCP连接方式外,还提供SOCKET(LINUX默认连接方式).PIPE和SHAR ...

  4. MySQL数据库的两种连接方式:TCP/IP和Socket

    Linux平台环境下主要有两种连接方式,一种是TCP/IP连接方式,另一种就是socket连接. 在Windows平台下,有name pipe和share memory(不考虑)两种. TCP/IP连 ...

  5. 如何修改MySQL字符集

    首先,MySQL的字符集问题主要是两个概念,一个是Character Sets,一个是Collations,前者是字符内容及编码,后者是对前者进行比较操作的一些规则.这两个参数集可以在数据库实例.单个 ...

  6. MySQL学习笔记七:存储引擎

    1.MySQL存储引擎的设计采用“插件式”方案,用户可以很方便地选择使用哪种存储引擎,想使用mysql没有提供的引擎时,可以自己安装进去. 查看支持的存储引擎 mysql> show engin ...

  7. MySQL更改数据库数据存储目录

    MySQL数据库默认的数据库文件位于/var/lib/mysql下,有时候由于存储规划等原因,需要更改MySQL数据库的数据存储目录.下文总结整理了实践过程的操作步骤. 1:确认MySQL数据库存储目 ...

  8. 源码编译安装mysql

    1       概述 首先来看下mysql的下载地址: http://ftp.plusline.de/mysql/Downloads/ 这里有mysql的各种版本 操作系统:CentOS releas ...

  9. 【转载】Mysql 查看连接数,状态

    转载地址:http://blog.csdn.net/starnight_cbj/article/details/4492555 命令: show processlist; 如果是root帐号,你能看到 ...

随机推荐

  1. 【CodeVS 1218】【NOIP 2012】疫情控制

    http://codevs.cn/problem/1218/ 比较显然的倍增,但是对于跨过根需要很多讨论,总体思路是贪心. 写了一上午,不想再说什么了 #include<cstdio> # ...

  2. caffe使用

    训练时, solver.prototxt中使用的是train_val.prototxt ./build/tools/caffe/train -solver ./models/bvlc_referenc ...

  3. java-首字母大小写

    /** * 首字母小写 * * @param str * @return */ public static String toLowerCaseFirstChar(String s) { if (Ch ...

  4. Linux网卡的相关配置总结

    当有多个网卡的时候,我们需要进行相关的配置. 一.如何改变网卡的名字? 修改/etc/udev/rules.d/70-persistent-net.rules 进去之后的效果是 根据mac地址,把没用 ...

  5. JVM学习笔记:字节码执行引擎

    JVM学习笔记:字节码执行引擎 移步大神贴:http://rednaxelafx.iteye.com/blog/492667  

  6. 【BZOJ-1040】骑士 树形DP + 环套树 + DFS

    1040: [ZJOI2008]骑士 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 3312  Solved: 1269[Submit][Status ...

  7. JSP教程推荐

    从搭建环境到上手JSP再到Servlet. http://www.runoob.com/jsp/jsp-tutorial.html

  8. C++开发的基于TCP协议的内网聊天工具

    项目相关地址 源码:https://github.com/easonjim/TCPChat bug提交:https://github.com/easonjim/TCPChat/issues

  9. dotnet文件操作

    /// <summary> /// 创建文件夹 /// </summary> /// <param name="sender"></par ...

  10. HDU4612 Warm up

    Time Limit: 5000MS   Memory Limit: 65535KB   64bit IO Format: %I64d & %I64u Description N planet ...