c语言读取mysql库中的数据的程序头文件怎么设置 (c语言读取目录下所有文件名)
本文目录导航:
c语言读取mysql库中的数据的程序头文件怎么设置
Mysql C API编程步骤1、首先我们要包含mysql的头文件,并链接mysql动态库。
即添加以下语句:#include <WinSock2.h> // 进行网络编程需要winsock2.h#include <mysql.h>#pragma comment(lib, “”)2、创建MYSQL变量。
如:MYSQL mysql;3、初始化MYSQL变量。
mysql_init(&mysql);4、调用mysql_real_connect函数连接Mysql数据库。
mysql_real_connect函数的原型如下:MYSQL * STDCALL mysql_real_connect(MYSQL *mysql, const char *host,const char *user,const char *passwd,const char *db,unsigned int port,const char *unix_socket,unsigned long clientflag);参数说明:mysql–前面定义的MYSQL变量;host–MYSQL服务器的地址;user–登录用户名;passwd–登录密码;db–要连接的数据库;port–MYSQL服务器的TCP服务端口;unix_socket–unix连接方式,为NULL时表示不使用socket或管道机制;clientflag–Mysql运行为ODBC数据库的标记,一般取0。
连接失败时该函数返回0。
5、调用mysql_real_query函数进行数据库查询。
mysql_real_query函数的原型如下:int STDCALL mysql_real_query(MYSQL *mysql, const char *q, unsigned long length);参数说明:mysql–前面定义的MYSQL变量;q–SQL查询语句;length–查询语句的长度。
查询成功则该函数返回0。
6、通过调用mysql_store_result或mysql_use_result函数返回的MYSQL_RES变量获取查询结果数据。
两个函数的原型分别为:MYSQL_RES * STDCALL mysql_store_result(MYSQL *mysql);MYSQL_RES * STDCALL mysql_use_result(MYSQL *mysql);这两个函数分别代表了获取查询结果的两种方式。
第一种,调用mysql_store_result函数将从Mysql服务器查询的所有数据都存储到客户端,然后读取;第二种,调用mysql_use_result初始化检索,以便于后面一行一行的读取结果集,而它本身并没有从服务器读取任何数据,这种方式较之第一种速度更快且所需内存更少,但它会绑定服务器,阻止其他线程更新任何表,而且必须重复执行mysql_fetch_row读取数据,直至返回NULL,否则未读取的行会在下一次查询时作为结果的一部分返回,故经常我们使用mysql_store_result。
7、调用mysql_fetch_row函数读取结果集数据。
上述两种方式最后都是重复调用mysql_fetch_row函数读取数据。
mysql_fetch_row函数的原型如下:MYSQL_ROW STDCALL mysql_fetch_row(MYSQL_RES *result);参数result就是mysql_store_result或mysql_use_result的返回值。
该函数返回MYSQL_ROW型的变量,即字符串数组,假设为row,则row〔i〕为第i个字段的值。
当到结果集尾部时,此函数返回NULL。
8、结果集用完后,调用mysql_free_result函数释放结果集,以防内存泄露。
mysql_free_result函数的原型如下:void STDCALL mysql_free_result(MYSQL_RES *result);9、不再查询Mysql数据库时,调用mysql_close函数关闭数据库连接。
mysql_close函数的原型为:void STDCALL mysql_close(MYSQL *sock);

C语言 Socket 编程中 ipv4 和 ipv6 可以相互连接么
在windows下用C语言如何实现socket网络编程,需要用到以下头文件和库:头文件winsock2.h,静态库文件Ws2_动态DLL文件Ws2_写一个UDP发送程序的步骤如下:1. 用WSAStartup函数初始化Socket环境;2. 用socket函数创建一个套接字;3. 用setsockopt函数设置套接字的属性,例如设置为广播类型;很多时候该步骤可以省略;4. 创建一个sockaddr_in,并指定其IP地址和端口号;5. 用sendto函数向指定地址发送数据,这里的目标地址就是广播地址;注意这里不需要绑定,即使绑定了,其地址也会被sendto中的参数覆盖;若使用send函数则会出错,因为send是面向连接的,而UDP是非连接的,只能使用sendto发送数据;6. 用closesocket函数关闭套接字;7. 用WSACleanup函数关闭Socket环境。
与之类似,一个UDP接收程序的步骤如下,注意接收方一定要bind套接字:1. 用WSAStartup函数初始化Socket环境;2. 用socket函数创建一个套接字;3. 用setsockopt函数设置套接字的属性,例如设置为广播类型;4. 创建一个sockaddr_in,并指定其IP地址和端口号;5. 用bind函数将套接字与接收的地址绑定起来,然后调用recvfrom函数或者recv接收数据; 注意这里一定要绑定,因为接收报文的套接字必须在网络上有一个绑定的名称才能保证正确接收数据;6. 用closesocket函数关闭套接字;7. 用WSACleanup函数关闭Socket环境。
参考资料地址
C语言基础网络编程求助 如何实现多线程
#include <sys/stat.h>#include <fcntl.h>#include <errno.h>#include <netdb.h>#include <sys/types.h>#include <sys/socket.h>#include <netinet/in.h>#include <arpa/inet.h>#include <string.h>#include <stdlib.h>#include <stdio.h>#include <unistd.h>#include <pthread.h>void*thread(void*);int client[5],i;main(){int serverSocket= socket(AF_INET,SOCK_STREAM,0);struct sockaddr_in server_addr;struct sockaddr_in clientAddr;int addr_len = sizeof(clientAddr);//线程pthread_t id;pthread_attr_t attr;pthread_attr_init(&attr);////////////////////////////////////////////////pthread_attr_setdetachstate(&attr,PTHREAD_CREATE_DETACHED);//创建地址bzero(&server_addr,sizeof(server_addr));server__family =AF_INET;server__port = htons(5555);server__addr.s_addr = htonl(INADDR_ANY);//绑定bind(serverSocket,(struct sockaddr *)&server_addr,sizeof(server_addr));listen(serverSocket,5);for(i=0;i<5;i++){client[i] = accept(serverSocket,(struct sockaddr *)&clientAddr,(socklen_t*)&addr_len);pthread_create(&id,&attr,thread,(void *)&client[i]);/////////////////////////////////pthread_join(id,NULL);}close(serverSocket);/////////////////////////return 0;}void* thread(void* argv){char buffer[200];int a=i;int s_c = *((int*)argv);///////////////////while(1){int n = recv(s_c,buffer,sizeof(buffer),0);if(n > 0)printf(客户端发过来的 : %s\n,buffer);elsereturn;}close(s_c);}