linuc下c语言与mysql的连接

1、安装mysql客户端和服务器:

sudo apt-get install mysql-server mysql-client 

2、安装c语言下mysql的头文件和动态库:

sudo apt-get install libmysqlclient15-dev  

3、启动mysql:

mysql -uroot -p

4、创建一个名为foo的数据库,然后新建一个表,并插入数据:

CREATE DATABASE foo;

CREATE TABLE children(  
    childno int(11) NOT NULL auto_increment,  
    fname varchar(30),  
    age int(11),  
    PRIMARY KEY (childno)  
    );   
INSERT INTO children(childno,fname,age) VALUES(1,'Jenny',21);  
INSERT INTO children(childno,fname,age) VALUES(2,'Andrew',17);  
INSERT INTO children(childno,fname,age) VALUES(3,'Gavin',8);  
INSERT INTO children(childno,fname,age) VALUES(4,'Duncan',6);  
INSERT INTO children(childno,fname,age) VALUES(5,'Emma',4);  
INSERT INTO children(childno,fname,age) VALUES(6,'Alex',15);  
INSERT INTO children(childno,fname,age) VALUES(7,'Adrian',9);


5、c语言写如下的测试数据库连接函数:

#include <stdio.h>
#include <stdlib.h>

#include <mysql.h>

int main(int argc,char *argv[])
{
	MYSQL *conn_ptr;
	conn_ptr=mysql_init(NULL);

	if(!conn_ptr){
		fprintf(stderr,"mysql_init failed!\n");
		return EXIT_FAILURE;
	}
	conn_ptr=mysql_real_connect(conn_ptr,"localhost","root","*****","foo",0,NULL,0); /*此处的root为你的mysql登录用户名,*****为登录密码,foo为刚才建立的数据库*/
	if(conn_ptr)
		printf("Connect success\n");
	else
		printf("Connect failed\n");
	
	mysql_close(conn_ptr);
	
	return EXIT_SUCCESS;
}
编译:gcc -I/usr/include/mysql connect.c -L/usr/lib/mysql -lmysqlclient -o conntect

连接成功输出:Connect success

6、写一c程序,改变刚才建立的表的内容:

#include <stdlib.h>  
#include <stdio.h>  
#include <string.h>  
#include "mysql.h"  
//#define SELECT_QUERY "select fname from children where age>%d"    /*查询age大于%d的所有行*/
#define SELECT_QUERY "insert into children(fname,age) values('Ws',11)"	/*增加一行*/
//#define SELECT_QUERY "delete from children where age=%d"	/*删除age=%d的所有行*/
int main(int argc,char *argv[])  
{  
	MYSQL_RES  *res;  
 	MYSQL con,*sock;
	MYSQL_ROW row;
  	char qbuf[160];
	
	mysql_init(&con);  
	if(sock=(mysql_real_connect(&con,"localhost","root","wangsong110","foo",0,NULL,0)))  
	{  
		printf("Connection success\n");  
  	}
    //执行SQL语句  
	sprintf(qbuf,SELECT_QUERY,atoi(argv[1]));
	mysql_query(sock,qbuf);
//	res=mysql_store_result(sock);
	if(!(res=mysql_store_result(sock))){
//		fprintf(stderr,"Coudn't get result from %sn",mysql_error(sock));
		exit(1);
	}
	printf("number of fileds returned:%d\n",mysql_num_fields(res));

	while(row=mysql_fetch_row(res)){
		printf("The age=%d's fname is :%s\n",atoi(argv[1]),(((row[0]==NULL)&&(!strlen(row[0])))?"NULL":row[0]));
		puts("query ok !\n");
	}
	mysql_free_result(res);
	mysql_close(sock);  
	return 0;  


}
编译:gcc -I/usr/include/mysql alt.c -L/usr/lib/mysql -lmysqlclient -o alt

执行结果为:


可见,表中多了一行Ws,其他同理!



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值