C语言操作mysql数据库

1、启动数据库 

/usr/local/mysql/support-files/mysql.server start

2、登录数据库 

mysql -uroot -p1

-u 后边接用户名

-p 后边代表密码 

3、编译程序

-I :代表路径  头文件的目录
-L :动态库的路径 指定库的路径
-l :指定需连接的库名
gcc dm01_hello.c -o dm01_hello -I/usr/local/mysql/include/  -L/usr/local/mysql/lib/ -lmysqlclient

4、代码


/*
       gcc [-c|-S|-E] [-std=standard]
           [-g] [-pg] [-Olevel]
           [-Wwarn...] [-pedantic]
           [-Idir...] [-Ldir...]
           [-Dmacro[=defn]...] [-Umacro]
           [-foption...] [-mmachine-option...]
           [-o outfile] [@file] infile...
           */
 /*          
[mysql01@localhost day01]$ locate mysql.h
/usr/include/Qt/qsql_mysql.h
/usr/include/QtSql/qsql_mysql.h
/usr/include/mysql/mysql.h
/usr/share/apps/quanta/doc/php/ref.mysql.html
/usr/share/doc/python-sqlalchemy-0.5.5/doc/reference/dialects/mysql.html
/usr/share/doc/rsyslog-5.8.10/ommysql.html
/usr/share/doc/rsyslog-5.8.10/rsyslog_mysql.html   
*/        

/*
[mysql01@localhost day01]$ 
[mysql01@localhost day01]$ locate mysqlclient
/usr/lib64/mysql/libmysqlclient.a
/usr/lib64/mysql/libmysqlclient_r.a
[mysql01@localhost day01]$ 
*/





/*
MYSQL *mysql_init(MYSQL *mysql) 

*/

/*
问题1
/usr/lib64/mysql/libmysqlclient.a(net_serv.cc.o):(.data.DW.ref.__gxx_personality_v0[DW.ref.__gxx_personality_v0]+0x0): undefined reference to `__gxx_personality_v0'
/usr/lib64/mysql/libmysqlclient.a(password.c.o): In function `scramble_323':



问题2
//动态加载动态库

问题3 
//线程库


问题4
/usr/lib64/mysql/libmysqlclient.a(my_getsystime.c.o): In function `my_getsystime':
/pb2/build/sb_0-12734909-1406113305.48/rpm/BUILD/mysqlcom-pro-5.6.20/mysqlcom-pro-5.6.20/mysys/my_getsystime.c:44: undefined reference to `clock_gettime'
collect2: ld 返回 1
*/

//问题5  连接rt库
// gcc  dm01_hello.c -o dm01_hello  -I/usr/include/ -L/usr/lib64/mysql  -lmysqlclient   -lm -lrt -ldl  -lstdc++ -lpthread 



#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <mysql/mysql.h>


int main()
{
	
	int 	ret = 0;
	
	MYSQL 	mysql;
	MYSQL	*connect = NULL;
	
	connect = mysql_init(&mysql) ;
	if (connect == NULL)
	{
		ret = -1;
		printf("func mysql_init() err \n");
		return ret;
	}
	
	printf("func mysql_init() ok \n");
	
	mysql_close(&mysql);
	
	printf("hello...\n");
	return ret;
}

5、结果 

6、代码2




#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <mysql/mysql.h>

unsigned int mysql_errno(MYSQL *mysql)

int main()
{
	
	int 	ret = 0;
	
	MYSQL 	mysql;
	MYSQL	*connect = NULL;
	
	connect = mysql_init(&mysql) ;
	if (connect == NULL)
	{
		ret =  mysql_errno(&mysql) ;
		printf("func mysql_init() err \n");
		return ret;
	}
	printf("func mysql_init() ok \n");
	
	
	connect = mysql_real_connect(connect, "zhufei", "root", "1", "mydb61", 0, NULL, 0);
	if (connect == NULL)
	{
		ret =  mysql_errno(&mysql) ;
		printf("func mysql_init() err \n");
		return ret;	
	}
	printf("func mysql_real_connect() ok \n");
	
	//查询
	const char *query = "select *from emp";
	ret = mysql_query(&mysql, query);
	if (ret != 0)
	{
		ret =  mysql_errno(&mysql) ;
		printf("func mysql_query() err \n");
		return ret;	
	}
	
	//typedef char **MYSQL_ROW;               /* return data as array of strings */
	//typedef unsigned int MYSQL_FIELD_OFFSET; /* offset to current field */

	//获取结果集合 
	//结果集合中 可以含有10行数据
	MYSQL_RES *result = mysql_store_result(&mysql);
	
	MYSQL_ROW row = NULL;
	while (row = mysql_fetch_row(result) ) 
	{
		// 自己查找 如何 获取 selct查询 有多少列
		//自己查找 获取表头的函数 ...
		printf("%s, %s, %s, %s, %s, %s, %s, %s \n", row[0], row[1],row[2],row[3],row[4],row[5],row[6],row[7]);
	}
	
	mysql_free_result(result);
	

	mysql_close(&mysql);
	
	printf("hello...\n");
	return ret;
}

//二级指针 三种内存模型

//二级指针 从分配内存的 角度 输入和输出...

/*
char ** mysql_store_result (MYSQL_RES *res)
{
	int i = 0;
	char **p = (char **) malloc(sizeof(char *)  * 7);
	for (i=0; i<7 ; i++)
	{
		p[i] = (char *)malloc(100*sizeof(char) )_;
		strcpy(p[i], "aaaaaa") ;
	}
	
}

int  mysql_store_result (MYSQL_RES *res, char ***myp)
{
	int i = 0;
	char **p = (char **) malloc(sizeof(char *)  * 7);
	for (i=0; i<7 ; i++)
	{
		p[i] = (char *)malloc(100*sizeof(char) )_;
		strcpy(p[i], "aaaaaa") ;
	}
	*myp = p;
}
*/

7、结果 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值