linux版本是red hat 64位的,装的sql版本也是 64位,一开始用 gcc -I /usr/include/mysql connect1.c -L/usr/lib/mysql -lmysqlclient -o connect1 进行编译
结果死活编译不过去,后来一查原来库文件不在lib 而是在lib64,而且没必要用-I 因为程序里已经包含了,-L也是没必要因为 usr/lib64 编译时会自动寻找
直接gcc connect1.c -o connect1 -l mysqlclient 就通过了。
1. MYSQL* mysql_init(MYSQL *);
2. MYSQL* mysql_real_connect(MYSQL *connection,const char *server_host,const char *sql_user_name,const char *sql_password,const char *db_name,unsigned int port_number,const char *unix_socket_name,unsigned int flags);
3. int mysql_options(MYSQL *connection,enum option_to_set,const char *argument);
4. void mysql_close(MYSQL *connection);
5. unsigned int mysql_errno(MYSQL *connection);
6. char* mysql_error(MYSQL *connection);
7. int mysql_query(MYSQL *connection,const char *query); //执行SQL语句
8. my_ulonglong mysql_affected_rows(MYSQL *connection); //检查受查询影响的行数
9. MYSQL_RES* mysql_store_result(MYSQL *connection); //从select中提取所有数据
10.my_ulonglong mysql_num_rows(MYSQL_RES *result); //得到返回记录的数目
11.MYSQL_ROW mysql_fetch_row(MYSQL_RES *result); //从结果结构中提取一行
12.void mysql_data_seek(MYSQL_RES *result,my_ulonglong offset); //设置将提取的行
13.MYSQL_ROW_OFFSET mysql_row_tell(MYSQL_RES *result); //表示结果集中的当前位置
14.MYSQL_ROW_OFFSET mysql_row_seek(MYSQL_RES *result,MYSQL_ROW_OFFSET offset);
15.void mysql_free_result(MYSQL_RES *result);
16.MYSQL_RES* mysql_use_result(MYSQL *connection); //提取一行数据
17.unsigned int mysql_field_count(MYSQL *connection); //返回结果集字段数目
18.MYSQL_FIELD* mysql_fetch_field(MYSQL_RES *result); //将元数据和数据提取
19.MYSQL_FIELD_OFFSET mysql_field_seek(MYSQL_RES *result,MYSQL_FIELD_OFFSET offset);
20.char* mysql_get_client_info(void);
21.char* mysql_get_host_info(MYSQL *connection);
22.char* mysql_get_server_info(MYSQL *connection);
23.char* mysql_info(MYSQL *connection);
24.int mysql_select_db(MYSQL *connection const char *dbname);
25.int mysql_shutdown(MYSQL *connection);
实例代码:
#include <stdlib.h>
#include <stdio.h>
#include "mysql/mysql.h" //主要的头文件
MYSQL conn_ptr; //建立连接用
MYSQL_RES * res_ptr; //返回结果
MYSQL_ROW sqlrow; //每个数据结构
void display_row()
{
unsigned int field_count = 0;
while(field_count < mysql_field_count(&conn_ptr)) //返回结果的行数
{
printf("%s ", sqlrow[field_count]);
field_count++;
}
printf("\n");
}
int main(int argc, char* argv[])
{
mysql_init(&conn_ptr); //初始化链接
int res;
if(mysql_real_connect(&conn_ptr,"localhost","root","123456","fanren2",0,NULL,0)) //建立连接
{
printf("Connection success\n");
res = mysql_query(&conn_ptr,"select * from `t_group_buy` where record_id > 770"); //执行sql
if(!res)
{
res_ptr = mysql_use_result(&conn_ptr); //返回执行sql的结果
if(res_ptr)
{
printf("retrieve %lu rows\n", (unsigned long)mysql_num_rows(res_ptr)); //返回执行结果的行数
while(sqlrow = mysql_fetch_row(res_ptr)) //逐个取出结果
{
printf("Fetched data... \n");
display_row();
}
if(mysql_errno(&conn_ptr))
{
fprintf(stderr,"Retrive error: %s\n", mysql_error(&conn_ptr));
}
mysql_free_result(res_ptr); //释放sql结果占有的内存
}
}
else
{
fprintf(stderr,"Insert error %d: %s\n", mysql_errno(&conn_ptr),mysql_error(&conn_ptr));
}
mysql_close(&conn_ptr); //释放链接
}
else
{
printf("Connection failed\n");
if(mysql_errno(&conn_ptr)) //判断是否有错误
{
fprintf(stderr, "connection error %d: %s\n",mysql_errno(&conn_ptr),mysql_error(&conn_ptr)); //获取错误码以及错误描述
}
}
return EXIT_SUCCESS;
}