linux c mysql类_linux c下mysql编程样例

/*============================================================================

Name : mysql1.c

Author : suys

Version :

Copyright : Your copyright notice

Description : Link to mysql in C, Ansi-style

============================================================================*/#include#include#include#include#include#include#include

#define BUFSIZE 1024MYSQL mysql,*conn;//删除函数

void deletename(char *SQL)

{

memset(SQL,0, BUFSIZE);

sprintf(SQL,"%s", "请输入要干掉的名字>:");

write(STDOUT_FILENO, SQL, strlen(SQL));//这句话替代printf函数,这样写就不需要\n也能相输出屏幕输出

char name[1024];

memset(name,0, sizeof(name));

read(STDIN_FILENO, name,sizeof(name)); //等待用户输入要删除的名字

name[strlen(name) - 1] = 0; //将字符串最后一位\n替换为0,最后放的整数0而不是字符串‘0‘

memset(SQL,0, BUFSIZE);

sprintf(SQL,"DELETE FROM table1 WHERE name = ‘%s‘", name);

printf("%s\n", SQL);

}//插入数据函数

void insertname(char *SQL)

{

memset(SQL,0, BUFSIZE);

sprintf(SQL,"%s", "请输入要插入的名字>:");

write(STDOUT_FILENO, SQL, strlen(SQL));//这句话替代printf函数,这样写就不需要\n也能相输出屏幕输出

char name[1024];

memset(name,0, sizeof(name));

read(STDIN_FILENO, name,sizeof(name)); //等待用户输入要删除的名字

name[strlen(name) - 1] = 0; //将字符串最后一位\n替换为0,最后放的整数0而不是字符串‘0‘

memset(SQL,0, BUFSIZE);

sprintf(SQL,"%s", "请输入要插入的性别>:");

write(STDOUT_FILENO, SQL, strlen(SQL));//这句话替代printf函数,这样写就不需要\n也能相输出屏幕输出

char sex[1024];

memset(sex,0, sizeof(sex));

read(STDIN_FILENO, sex,sizeof(sex)); //等待用户输入要删除的名字

sex[strlen(sex) - 1] = 0; //将字符串最后一位\n替换为0,最后放的整数0而不是字符串‘0‘

memset(SQL,0, BUFSIZE);

sprintf(SQL,"%s", "请输入要插入的年龄>:");

write(STDOUT_FILENO, SQL, strlen(SQL));//这句话替代printf函数,这样写就不需要\n也能相输出屏幕输出

char age[1024];

memset(age,0, sizeof(age));

read(STDIN_FILENO, age,sizeof(age)); //等待用户输入要删除的名字

age[strlen(age) - 1] = 0; //将字符串最后一位\n替换为0,最后放的整数0而不是字符串‘0‘

memset(SQL,0, BUFSIZE);

sprintf(SQL,"%s", "请输入要插入的班级>:");

write(STDOUT_FILENO, SQL, strlen(SQL));//这句话替代printf函数,这样写就不需要\n也能相输出屏幕输出

char classes[1024];

memset(classes,0, sizeof(classes));

read(STDIN_FILENO, classes,sizeof(classes)); //等待用户输入要删除的名字

classes[strlen(classes) - 1] = 0; //将字符串最后一位\n替换为0,最后放的整数0而不是字符串‘0‘

memset(SQL,0, BUFSIZE);

sprintf(SQL,"INSERT INTO table1 (name, sex, age, class) VALUES (‘%s‘, ‘%s‘, %s, %s)", name, sex, age, classes);

printf("%s\n", SQL);

}//更新数据函数

void updatename(char *SQL)

{

memset(SQL,0, BUFSIZE);

sprintf(SQL,"%s", "请输入要修改的名字>:");

write(STDOUT_FILENO, SQL, strlen(SQL));//这句话替代printf函数,这样写就不需要\n也能相输出屏幕输出

char name[1024];

memset(name,0, sizeof(name));

read(STDIN_FILENO, name,sizeof(name)); //等待用户输入要删除的名字

name[strlen(name) - 1] = 0; //将字符串最后一位\n替换为0,最后放的整数0而不是字符串‘0‘

memset(SQL,0, BUFSIZE);

sprintf(SQL,"%s", "请输入修改后的性别>:");

write(STDOUT_FILENO, SQL, strlen(SQL));//这句话替代printf函数,这样写就不需要\n也能相输出屏幕输出

char sex[1024];

memset(sex,0, sizeof(sex));

read(STDIN_FILENO, sex,sizeof(sex)); //等待用户输入要删除的名字

sex[strlen(sex) - 1] = 0; //将字符串最后一位\n替换为0,最后放的整数0而不是字符串‘0‘

memset(SQL,0, BUFSIZE);

sprintf(SQL,"%s", "请输入修改后的年龄>:");

write(STDOUT_FILENO, SQL, strlen(SQL));//这句话替代printf函数,这样写就不需要\n也能相输出屏幕输出

char age[1024];

memset(age,0, sizeof(age));

read(STDIN_FILENO, age,sizeof(age)); //等待用户输入要删除的名字

age[strlen(age) - 1] = 0; //将字符串最后一位\n替换为0,最后放的整数0而不是字符串‘0‘

memset(SQL,0, BUFSIZE);

sprintf(SQL,"%s", "请输入修改后的班级>:");

write(STDOUT_FILENO, SQL, strlen(SQL));//这句话替代printf函数,这样写就不需要\n也能相输出屏幕输出

char classes[1024];

memset(classes,0, sizeof(classes));

read(STDIN_FILENO, classes,sizeof(classes)); //等待用户输入要删除的名字

classes[strlen(classes) - 1] = 0; //将字符串最后一位\n替换为0,最后放的整数0而不是字符串‘0‘

memset(SQL,0, BUFSIZE);

sprintf(SQL,"UPDATE table1 SET sex = ‘%s‘, age = ‘%s‘, class = ‘%s‘ WHERE name = ‘%s‘", sex, age, classes, name);

printf("%s\n", SQL);

}//查询

void selectname(const char *SQL)

{if(mysql_query(conn, SQL) != 0)

{

printf("query error, %s\n", mysql_error(&mysql));

}//调用mysql_store_result得到查询结果,结果放到MYSQL_RES 结构中

MYSQL_RES *result =mysql_store_result(conn);//要知道返回数据集有多少列才能自由的使用SELECT语句

MYSQL_FIELD *field;int iFieldCount = 0;while(1)

{

field= mysql_fetch_field(result); //循环得到列名,如果循环到列的最后,函数返回NULL

if(field ==NULL)break;

printf("%s\t", field->name);

iFieldCount++;

}

printf("\n");//循环遍历每一行

MYSQL_ROW row;while(1)

{

row=mysql_fetch_row(result);if(row ==NULL)break;int i = 0;for(; i < iFieldCount; i++)

printf("%s\t", (const char *)row[i]);

printf("\n");

}

mysql_free_result(result);

}int main(int arg, char *args[])

{if(arg < 4)return -1;

mysql_init(&mysql); //相当于SQL内部初始化了一个TCP的socket,同时初始化了SQL必须的内存//连接到mysql server

conn = mysql_real_connect(&mysql, args[1], args[2], args[3], args[4], 0, 0, 0);if(conn ==NULL)

{

printf("connect error, %s\n", mysql_error(&mysql));return -1;

}if(mysql_query(conn, "SET NAMES utf8") != 0)

{

printf("设置字符集错误,%s\n", mysql_error(&mysql));

}charbuf[BUFSIZE];

memset(buf,0, sizeof(buf));

strcpy(buf,"请选择\n1:插入\n2:删除\n3:修改\n4:查询\n");

write(STDOUT_FILENO, buf, strlen(buf));

memset(buf,0, sizeof(buf));

read(STDIN_FILENO, buf,sizeof(buf));if(strncmp(buf, "4", 1) == 0) //用户输入的4

{

memset(buf,0, sizeof(buf));

strcpy(buf,"请输入任意的SELECT语句");

write(STDOUT_FILENO, buf, strlen(buf));

memset(buf,0, sizeof(buf));

read(STDIN_FILENO, buf,sizeof(buf));

selectname(buf);

}else{if(strncmp(buf, "1", 1) == 0) //用户输入的1

{

insertname(buf);

}if(strncmp(buf, "2", 1) == 0) //用户输入的2

{

deletename(buf);

}if(strncmp(buf, "3", 1) == 0) //用户输入的3

{

updatename(buf);

}if(mysql_query(conn, buf) != 0)

{

printf("设置字符集错误,%s\n", mysql_error(&mysql));

}

}

mysql_close(conn);

puts("Hello World\n");returnEXIT_SUCCESS;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值