Linux下C语言学习笔记—操作MySQL
注:下面的所有例子在mandriva linux下测试通过
1,使用c语言操作mysql之前,先在mysql里头创建一个数据库,一个表,在表里头添加数据如下:
创建数据库,库名为cusemysql:
mysql>create database cusemysql;
创建表,表名为:
mysql>use cusemysql;
mysql>create table children(childno int not null unique,fname varchar(20),age int);
添加一点数据哦:
mysql>insert into children values(5,"anny",10);
对拉,为了方便起见,把表的大致样子给大家看看
childno fname age
1 小星 9
2 大量 15
//////////////////
/* select1.c */
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "/usr/include/mysql/mysql.h"
int main(int argc, char *argv[])
{
MYSQL my_connection;
MYSQL_RES *res_ptr; /*指向检索的结果存放地址的指针*/
MYSQL_ROW sqlrow; /*返回的记录信息*/
MYSQL_FIELD *fd; /*字段结构指针*/
char aszflds[25][25]; /*用来存放各字段名*/
int res; /*执行查询操作后的返回标志*/
int i,j,k;
mysql_init(&my_connection);
/*mysql_real_connect(&mysql,host,user,passwd,dbname,0,NULL,0) == NULL)*/
if (mysql_real_connect(&my_connection, "127.0.0.1", "root", "你的密码","cusemysql",0,NULL,CLIENT_FOUND_ROWS))
{
printf("Connection success\n");
res = mysql_query(&my_connection, "select childno,fname,age from children where age<20");
if (res)
{
printf("SELECT error:%s\n",mysql_error(&my_connection));
}
else
{
res_ptr=mysql_store_result(&my_connection);
if(res_ptr)
{
printf("Retrieved %lu Rows\n",(unsigned long)mysql_num_rows(res_ptr));
/*取得各字段名*/
for(i=0;fd=mysql_fetch_field(res_ptr);i++)
strcpy(aszflds[i],fd->name);
/*输出各条记录*/
printf("下面是检索出的各条记录信息:\n");
j=mysql_num_fields(res_ptr);
for(i=0;i<j;i++)
printf("%s\t",aszflds[i]);
printf("\n");
while((sqlrow=mysql_fetch_row(res_ptr)))
{
for(i=0;i<j;i++)
printf("%s\t",sqlrow[i]);
printf("\n");
}
if (mysql_errno(&my_connection))
{
fprintf(stderr,"Retrive error:s\n",mysql_error(&my_connection));
}
}
mysql_free_result(res_ptr);
}
mysql_close(&my_connection);
}
else
{
fprintf(stderr, "Connection failed\n");