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,其他同理!