makefile
.SUFFIXES: .c .o
CC=gcc
SRCS=MysqL1.c
OBJS=$(SRCS:.c=.o)
EXEC=MysqL1
all: $(OBJS)
$(CC) -o $(EXEC) $(OBJS) -lMysqLclient
@echo '-------------ok--------------'
.c.o:
$(CC) -Wall -g -o $@ -c $<
clean:
rm -f $(OBJS)
rm -f core*
MysqL1.c
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
#include <errno.h>
#include <termios.h>
#include <MysqL/MysqL.h>
#define BUFSIZE 1024
MysqL MysqL,*connection;
void deletename(char *sql)
{
memset(sql,BUFSIZE);
sprintf(sql,"%s","请输入要干掉的名字>:");
write(STDOUT_FILENO,sql,strlen(sql)); //这句话是替换printf函数的,这样写就不需要
也能向屏幕输出了
char name[1024];
memset(name,sizeof(name));
read(STDIN_FILENO,name,sizeof(name)); //等待 用户输入要删除的名字,假定用户输入的是"饭岛爱"
name[strlen(name) - 1] = 0; //将字符串最后1位
替换为0,最后放的是整数0,而不是字符'0'
memset(sql,"DELETE FROM table1 WHERE name = '%s'",name); //
//sql = DELETE FROM table1 WHERE name = '饭岛爱'
printf("'%s'
",sql);
}
void insertname(char *sql)
{
memset(sql,"请输入要插入的名字>:");
write(STDOUT_FILENO,BUFSIZE); //这句话是替换printf函数的,这样写就不需要
也能向屏幕输出了
char name[1024];
memset(name,sizeof(name)); //等待 用户输入要插入的名字,"请输入要插入的性别>:");
write(STDOUT_FILENO,strlen(sql));
char sex[1024];
memset(sex,sizeof(sex));
read(STDIN_FILENO,sex,sizeof(sex)); //等待 用户输入要插入的性别,sex[strlen(sex) - 1] = 0; //将字符串最后1位
替换为0,"请输入要插入的年龄>:");
write(STDOUT_FILENO,strlen(sql));
char age[1024];
memset(age,sizeof(age));
read(STDIN_FILENO,age,sizeof(age)); //等待 用户输入要插入的年龄
age[strlen(age) - 1] = 0; //将字符串最后1位
替换为0,"请输入要插入的班级>:");
write(STDOUT_FILENO,strlen(sql));
char classes[1024];
memset(classes,sizeof(classes));
read(STDIN_FILENO,classes,sizeof(classes)); //等待 用户输入要插入的班级
classes[strlen(classes) - 1] = 0; //将字符串最后1位
替换为0,"INSERT INTO table1 (name,class) VALUES ('%s','%s',%s,'%s')",classes); //
//sql = DELETE FROM table1 WHERE name = '饭岛爱'
printf("'%s'
",sql);
}
void updatename(char *sql)
{
memset(sql,"请输入要修改的名字>:");
write(STDOUT_FILENO,"请输入要性别的性别>:");
write(STDOUT_FILENO,"请输入要年龄的年龄>:");
write(STDOUT_FILENO,"请输入要修改的班级>:");
write(STDOUT_FILENO,"UPDATE table1 SET sex = '%s',age = %s,class = '%s' WHERE name = '%s'",sql);
}
void selectname(const char *sql)
{
/*
char sql[1024];
memset(sql,"请输入要查询的名字>:");
write(STDOUT_FILENO,最后放的是整数0,而不是字符'0'
memset(sql,BUFSIZE);
if (strlen(name) == 0) //用户没有任何输入,只是敲了回车,长度为0了
{
sprintf(sql,"SELECT * FROM table2"); //
} else
{
sprintf(sql,"SELECT * FROM table2 where name = '%s'",name); //
}
*/
if (MysqL_query(connection,sql) != 0)
{
printf("query error,%s
",MysqL_error(&MysqL));
}
//调用MysqL_store_result得到查询结果,结果放到MysqL_RES结构当中
MysqL_RES *result = MysqL_store_result(connection);
//要知道返回数据集有多少列才能自由的使用各种SELECT语句
MysqL_FIELD *field;
int iFieldCount = 0;
while (1)
{
field = MysqL_fetch_field(result); //循环得到列名,如果循环到了列的最后,函数返回NULL
if (field == NULL)
break;
printf("%s ",field->name);
iFieldCount++;
}
printf("
");
//循环遍历每行
MysqL_ROW row;
while (1)
{
row = MysqL_fetch_row(result);
if (row == NULL)
break;
int i = 0;
for (; i < iFieldCount; i++)
{
printf("%s ",(const char *) row[i]);
}
printf("
");
}
MysqL_free_result(result);
}
int main(int arg,char *args[])
{
if (arg < 4)
return ⑴;
MysqL_init(&MysqL); //相当于sql内部初始化了1个TCP的socket,同时初始化了sql必须的内存和1些结构
//连接到MysqL server
connection = MysqL_real_connect(&MysqL,args[1],args[2],args[3],args[4],0);
if (connection == NULL)
{
printf("connect error,MysqL_error(&MysqL));
return ⑴;
}
if (MysqL_query(connection,"SET NAMES utf8") != 0) //设置字符集为UTF8
{
printf("设置字符集毛病,MysqL_error(&MysqL));
}
char buf[BUFSIZE];
memset(buf,sizeof(buf));
strcpy(buf,"请选择
1:插入
2:删除
3:修改
4:查询
");
write(STDOUT_FILENO,buf,strlen(buf));
memset(buf,sizeof(buf));
read(STDIN_FILENO,sizeof(buf));
if (strncmp(buf,"4",1) == 0) //输入用户输入的是4
{
memset(buf,sizeof(buf));
strcpy(buf,"请输入任意SELECt语句");
write(STDOUT_FILENO,strlen(buf));
memset(buf,sizeof(buf));
read(STDIN_FILENO,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);
}
MysqL_query(connection,buf);
}
MysqL_close(connection); //断开与sql server的连接
puts("!!!Hello World!!!"); /* prints !!!Hello World!!! */
return EXIT_SUCCESS;
}