测试windows 下 Socket+Mysql调用。

环境:

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

server:

 #include <WINSOCK2.H>
#include <stdio.h>
#include <mysql.h>
/*数据库连接用宏*/
#define HOST "localhost"//本地
#define USERNAME "root"//dbms user name
#define PASSWORD "123456"//password
#define DATABASE "test"//database name
#pragma comment(lib,"ws2_32.lib")
#pragma comment(lib,"C:\\Program Files\\MySQL\\MySQL Server 5.5\\lib\\libmysql.lib")
void query_sql(char* sql);//数据库查询
int main(int argc,char **argv)
{
WORD myVersionRequest;
WSADATA wsaData;
int err;
SOCKET serSocket;
SOCKADDR_IN addr;
int len;
SOCKADDR_IN clientsocket;
SOCKET serConn;
char sendBuf[];
char receiveBuf[];//接收
char *query;
query="select * from serverinfo";//查询学生表 myVersionRequest=MAKEWORD(,);
err=WSAStartup(myVersionRequest,&wsaData);
if (!err)
{
printf("已打开套接字,等待连接!\n");
}
else
{
printf("ERROR:嵌套字未打开!");
return ;
}
//进一步绑定套接字
serSocket=socket(AF_INET,SOCK_STREAM,);//创建了可识别套接字 //需要绑定的参数
addr.sin_family=AF_INET;
addr.sin_addr.S_un.S_addr=htonl(INADDR_ANY);//ip地址
addr.sin_port=htons();//绑定端口 bind(serSocket,(SOCKADDR*)&addr,sizeof(SOCKADDR));//绑定完成
listen(serSocket,);//其中第二个参数代表能够接收的最多的连接数 //////////////////////////////////////////////////////////////////////////
//开始进行监听
////////////////////////////////////////////////////////////////////////// len=sizeof(SOCKADDR);
while ()
{
query_sql(query);//仅用于测试,没有写客户端,所以在阻塞之前对数据库进行调用
serConn=accept(serSocket,(SOCKADDR*)&clientsocket,&len);//如果这里不是accept而是conection的话。。就会不断的监听 sprintf(sendBuf,"hello, %s !",inet_ntoa(clientsocket.sin_addr));//找对对应的IP并且将这行字打印到那里
printf("Send:%s\n",sendBuf);
send(serConn,sendBuf,strlen(sendBuf)+,); recv(serConn,receiveBuf,sizeof(receiveBuf),);
printf("recv:%s\n",receiveBuf); closesocket(serConn);//关闭
WSACleanup();//释放资源的操作
return ;
}
return ;
}
void query_sql(char* sql)
{
MYSQL my_connection; /*这是一个数据库连接*/
int res; /*执行sql語句后的返回标志*/
MYSQL_RES *res_ptr; /*指向查询结果的指针*/
MYSQL_FIELD *field; /*字段结构指针*/
MYSQL_ROW result_row; /*按行返回的查询信息*/
int row, column; /*查询返回的行数和列数*/
int i, j;
/*初始化mysql连接my_connection*/
mysql_init(&my_connection);
/*建立mysql连接*/
if (NULL != mysql_real_connect(&my_connection, HOST, USERNAME, PASSWORD,
DATABASE, , NULL, CLIENT_FOUND_ROWS)) /*连接成功*/
{
printf("数据库查询query_sql连接成功!\n");
/*设置查询编码为gbk,以支持中文*/
mysql_query(&my_connection, "set names gbk");
res = mysql_query(&my_connection, sql);
if (res) /*执行失败*/
{
printf("Error: mysql_query !\n");
/*关闭连接*/
mysql_close(&my_connection);
}
else /*现在就代表执行成功了*/
{
/*将查询的結果给res_ptr*/
res_ptr = mysql_store_result(&my_connection);
/*如果结果不为空,就把结果print*/
if (res_ptr)
{
/*取得結果的行数和*/
column = mysql_num_fields(res_ptr);
row = mysql_num_rows(res_ptr);
printf("查询到 %d 行 \n", row);
/*输出結果的字段名*/
for (i = ; field = mysql_fetch_field(res_ptr); i++)
printf("%10s ", field->name);
printf("\n");
/*按行输出結果*/
for (i = ; i < row+; i++)
{
result_row = mysql_fetch_row(res_ptr);
for (j = ; j < column; j++)
printf("%10s ", result_row[j]);
printf("\n");
}
}
/*不要忘了关闭连接*/
mysql_close(&my_connection);
}
}
else
{
printf("数据库连接失败");
}
}

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. Timer定时任务

    // main方法 public static void main(String[] args) { timerEnter(); } // 设定指定任务task在指定延迟delay后进行固定延迟per ...

  2. 切割haproxy的日志

    日志的切割有以下几种方法: 1.写个定时任务,每天某个时间点把旧的日志重命名,并对服务重启使其重新打开日志并写入. 2.通过管道的方式把新产生的日志写到另外一个日志文件里. 3.通过logrotate ...

  3. HTML-正则表达式

    常用HTML正则表达式      1.只能输入数字和英文的:       <input onkeyup="value=value.replace(/[\W]/g,'') "  ...

  4. js window.open 打开新窗体 参数设置

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  5. css-transition和transform实现图片悬浮移动动画

    今天在京东首页上看到一个效果,鼠标悬浮在图片上时,图片发生移动,鼠标移走时再移回,并且有一个过渡效果. 貌似很简单,自己做做试试吧 我首先使用的是jquery在鼠标悬浮到图片上给图片增加一个类,这个类 ...

  6. Hibernate学习-在线书城后台管理系统的设计

    写在前面:小编经历了昨天一晚上加今天一整天的“不吃不喝(夸张点…总之就是把时间全分享给TA了)”终于把程序的问题全部解决了,小编现在的心情十分的开森,开森,开森,Happy,话不多说,直接进入正题: ...

  7. poj3675 求多边形与圆的面积交

    题意:给出多边形的顶点坐标.圆的圆心坐标和半径,求面积交 sol:又是模板题啦= = 注意poj的C++好像认不出hypot函数,要稍微改写一下. hypot(double x,double y):即 ...

  8. 更改codeblocks的配色方案

    codeblocks默认只有一种配色方案, 不过我们可以手动添加. 在终端下输入如下命令: cd ~/.codeblocks sudo gedit default.conf 在打开的配置文件中, 找到 ...

  9. J-link烧写brjtag工具

    J-Link用的山寨货,不知道山寨了几代的那种....用的STM32F103C8T6的小板也是山寨了好几代那种,才25块钱...好在能用,J-Link用segger公司的软件能识别,也能找到CPU,板 ...

  10. [iOS dispatch_once创建单例]

    自苹果引入了Grand Central Dispatch (GCD)(Mac OS 10.6和iOS4.0)后,创建单例又有了新的方法,那就是使用dispatch_once函数,当然,随着演进的进行, ...