/*
* 需先安装mysqlclient库
* linux下C语言连接mysql的样例 * */
#include
#include
void create(MYSQL *conn_ptr) {
int ret;
ret = mysql_query(conn_ptr,\CHAR(5),birthday DATE,primary key(ID)) \
if (ret) {
fprintf(stderr,\ } else {
printf(\ } }
void insert(MYSQL *conn_ptr) {
int ret;
ret = mysql_query(conn_ptr,\values(10000,'lv','1989-02-09')\
if (ret) {
fprintf(stderr,\ } else {
printf(\ } }
void output(MYSQL *conn_ptr) {
//函数返回状态 int ret = 0; //查询结果集
MYSQL_RES *res = NULL;
//1行数据的\类型安全\表示,为计数字节、字符串的数组 MYSQL_ROW row = NULL;
//包含字段的相关信息,如字段名,类型和大小等 MYSQL_FIELD *field;
//向服务器发送执行语句
ret = mysql_query(conn_ptr,\ if (ret) {
//输出错误信息
fprintf(stderr,\ } else {
//客户端处理结果集的2种方式之一:一次性的检索整个结果集 res = mysql_store_result(conn_ptr); if (res) {
//结果集的字段数
int colNum = mysql_num_fields(res); //获取结果集的下一个字段的相关信息
while ( field = mysql_fetch_field(res) ) {
//字段名,如果用AS子句为该字段指定了别名,名称的值也是别名
printf(\ //原始字段名,忽略别名
printf(\
//包含该字段的表名,如果用AS子句为该表指定了别名,名称的值也是别名
printf(\ //包含该字段的原始表名,忽略别名
printf(\ //该字段类型所支持的最大长度 printf(\field: %lu\\n\
//该字段当前数据中存在的最大长度
printf(\real: %lu\\n\
//用于该字段的不同\位标志\。如:不能为NULL,主键、唯一键等等
printf(\ }
//从结果集中获取下一行
while (row = mysql_fetch_row(res)) {
//获取该字段每一列的长度,应避免使用strlen,因为可以存在2进制数据
unsigned long *lengths;
lengths = mysql_fetch_lengths(res); //输出每一个字段的长度及数据 int i = 0;
for (i = 0; i < colNum; i++)
printf(\ printf(\ }
//释放结果集所使用的内存 mysql_free_result(res); } } }
int main(int argc,char *argv[]) {
MYSQL *conn_ptr;
//初始化
conn_ptr = mysql_init(NULL); if (!conn_ptr) {
fprintf(stderr,\ return EXIT_FAILURE; }
//连接到mysql服务器,参数
为:handle,host,user,password,database,port,socket,client_flag conn_ptr =
mysql_real_connect(conn_ptr,\);
if (!conn_ptr) {
fprintf(stderr,\ }
create(conn_ptr);