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、结果