MYSQL数据库 - 学习笔记2 - C语言操作MYSQL
c语言操作mysql常用的函数:
MYSQL *mysql_init(MYSQL *);
//这里称之为载入函数吧,返回的MYSQL指针要用到后续的函数中
MYSQL *mysql_real_connect(MYSQL *connection,//mysql描述符
const char *server_host,//sql主机地址
const char *sql_user_name,sql管理账户名
const char *sql_password,//密码
const char *db_name,//数据库名
unsigned int port_number,//置0连接默认端口,一般为3306
const char *unix_socket_name,//套接字描述符,没有的话填NULL
unsigned int flags);//无另外属性时置0
//连接函数
mysql_close(MYSQL*mysql);//关闭连接,释放对象的内存空间
mysql_library_end(); //结束MySQL库的使用,如果不调用该函数,可能造成内存泄露
unsigned int mysql_errno(MYSQL *connection);//返回错误代码
char *mysql_error(MYSQL *connection);//返回错误信息
//执行sql语句
int mysql_query(MYSQL*mysql,const char* query);
int mysql_real_query(MYSQL *mysql,const char* query,unsinged long length);
//mysql_query函数是以NULL为终结的字符串查询指向的SQL查询,不应该为语句加中;或/g
//而mysql_real_query是以计数字符串为终结的查询
//如果查询字符串包含二进制数据,只能用mysql_real_query,因为二进制数据可能包含/0,导致计算字符串的长度不正确
my_ulonglong mysql_affected_rows(MYSQL *connection);//返回执行语句过后受影响的行数
MYSQL_RES *mysql_store_result(MYSQL *connection);//返回执行结果,适用于数据量较小时
MYSQL_RES *mysql_use_result(MYSQL *connection);//返回执行结果,适用于数据量较大时
my_ulonglong mysql_num_rows(MYSQL_RES *result);//返回结果的行数
unsigned int mysql_field_count(MYSQL *connection);//返回查询结果中的列数(column数)
MYSQL_ROW mysql_fetch_row(MYSQL_RES *result);//抽取一条记录,返回NULL时表示抽取完记录或者错误
void mysql_data_seek(MYSQL_RES *result, my_ulonglong offset);
//调整数据位置,offset为0时,下次调用mysql_fetch_row将返回result第一条记录
MYSQL_FIELD *mysql_fetch_field(MYSQL_RES *result);//获得查询结果中的列名等信息(表头信息)
MYSQL_ROW_OFFSET mysql_row_tell(MYSQL_RES *result);//返回当前的位置
MYSQL_ROW_OFFSET mysql_row_seek(MYSQL_RES *result, MYSQL_ROW_OFFSET offset);
//移动数据位置,并返回先前的位置,可以和上一个函数结合使用
void mysql_free_result(MYSQL_RES *result);//释放result空间
一个测试连接mysql的小程序
#include <stdlib.h>
#include <stdio.h>
#include <mysql.h>
int main() {
MYSQL *conn_ptr;
conn_ptr = mysql_init(NULL);
if (!conn_ptr) {
printf("mysql_init failed\n");
return EXIT_FAILURE;
}
conn_ptr = mysql_real_connect(conn_ptr, "localhost", "root", "123456", "test", 0, NULL, 0);
if (conn_ptr) {
printf("Connection success\n");
} else {
printf("Connection failed\n");
}
mysql_close(fd);
return EXIT_SUCCESS;
}
编译:gcc -o test test.c -L/user/lib/mysql -lmysqlclient
更新、插入、删除的小程序:
#include <stdlib.h>
#include <stdio.h>
#include <mysql.h>
int main() {
MYSQL *conn_ptr;
int res;
conn_ptr = mysql_init(NULL);
if (!conn_ptr) {
printf("mysql_init failed\n");
return EXIT_FAILURE;
}
conn_ptr = mysql_real_connect(conn_ptr, "localhost", "root", "123456", "test", 0, NULL, 0);
if (conn_ptr) {
res = mysql_query(conn_ptr, "insert into user values(null,'Ann',5)"); //可以把insert语句替换成delete或者update语句,都一样的
if (!res) { //输出受影响的行数
printf("Inserted %lu rows\n",(unsigned long)mysql_affected_rows(conn_ptr));
} else { //打印出错误代码及详细信息
fprintf(stderr, "Insert error %d: %sn",mysql_errno(conn_ptr),mysql_error(conn_ptr));
}
} else {
printf("Connection failed\n");
}
mysql_close(conn_ptr);
return EXIT_SUCCESS;
}
还没有评论,来说两句吧...