c语言实现mysql通配符_Mysql的C语言接口简单实现电话本功能
/*
* Mysql的C语言接口
*实现电话本管理程序
*Lzy2011-7-17
*/
#include
#include
#include
#include
intmenu_main(void)
{
intnum;
printf("\n--------Phone book management--------\n");
printf(" 1.Show all contacts\n");
printf(" 2.Find a contact by name\n");
printf(" 3.Fuzzy search by name\n");
printf(" 4.Add new contact\n");
printf(" 0.Quit\n");
printf("\nInput > ");//打印命令提示符
fflush(stdout);
scanf("%d",&num);
returnnum;
}
intInitMysql(MYSQL*conn)
{
/*连接服务器*/
if(!(mysql_real_connect(conn,"localhost","root","","test",0,NULL,0)))
{
fprintf(stderr,"connect fail: %s\n",mysql_error(conn));
return-1;
}
if(mysql_query(conn,"use test;"))
{
fprintf(stderr,"%s\n",mysql_error(conn));
return-1;
}
if(mysql_query(conn,"create table if not exists celltable(id int primary key auto_increment, name char(10), telephone varchar(11));"))
{
fprintf(stderr,"%s\n",mysql_error(conn));
return-1;
}
return0;
}
/*
*显示所有联系人信息,返回数组地址保存手机ID号,用完之后需释放
*/
int*PlayAll(MYSQL*conn,char*arg)
{
if(mysql_query(conn,arg))
{
fprintf(stderr,"%s\n",mysql_error(conn));
returnNULL;
}
MYSQL_RES*res=mysql_store_result(conn);//查询结果
intcols=mysql_num_fields(res);//结果集中的列数
introws=mysql_num_rows(res);//结果集中的行数
MYSQL_ROW row;//声明1行数据的“类型安全”
if(rows==0)
returnNULL;
inti,flag=1,count=0;
int*num=(int*)malloc(4*rows);
printf("\n---Contact Information---\n");
printf("Name\tTell\n");
while((row=mysql_fetch_row(res))!=NULL)//输出全部信息
{
for(i=0;i
{
if(flag)
{
num[count]=atoi(row[0]);//每一条信息的编号
flag=0;
continue;
}
printf("%s\t",row[i]);
}
flag=1;
count++;
printf("\n");
}
mysql_free_result(res);//释放结果集分配的内存
returnnum;
}
/*
*修改数据库信息函数
*入口参数:conn->服务器句柄
*num ->数据库纪录编号
*/
intReInfor(MYSQL*conn,intnum)
{
charbuf[20],arg[100];
intchose;
printf("\nFunction: 1->ReName 2-> ReTelephone 3->delte: ");
getchar();
chose=getchar();
switch(chose)
{
case'1':
printf("Name: ");
getchar();
scanf("%s",buf);
sprintf(arg,"update celltable set name='%s' where id=%d;",buf,num);
if(mysql_query(conn,arg))
{
fprintf(stderr,"%s\n",mysql_error(conn));
return-1;
}
break;
case'2':
printf("Tell: ");
getchar();
scanf("%s",buf);
sprintf(arg,"update celltable set telephone='%s' where id=%d;",buf,num);
if(mysql_query(conn,arg))
{
fprintf(stderr,"%s\n",mysql_error(conn));
return-1;
}
break;
case'3':
sprintf(arg,"delete from celltablewhere id=%d;",buf,num);
if(mysql_query(conn,arg))
{
fprintf(stderr,"%s\n",mysql_error(conn));
return-1;
}
break;
default:
return0;
}
return0;
}
/*
*按名字查找联系人信息
*预处理方法进行查询修改信息
*/
intFindByName(MYSQL*conn)
{
charquery[50];
MYSQL_STMT*stmt=mysql_stmt_init(conn);//创建MYSQL_STMT句柄
strcpy(query,"select * from celltable where name=?;");
if(mysql_stmt_prepare(stmt,query,strlen(query)))
{
fprintf(stderr,"mysql_stmt_prepare: %s\n",mysql_error(conn));
return-1;
}
MYSQL_BIND ctos[1],stoc[3];
bzero(ctos,sizeof(ctos));
bzero(stoc,sizeof(stoc));
charname[20];
printf("Name: ");
scanf("%s",name);
ctos[0].buffer_type=MYSQL_TYPE_STRING;
ctos[0].buffer_length=strlen(name);
ctos[0].buffer=name;
if(mysql_stmt_bind_param(stmt,ctos))
{
fprintf(stderr,"mysql_stmt_bind_param: %s\n",mysql_error(conn));
return-1;
}
intid;
chartell[11];
stoc[0].buffer_type=MYSQL_TYPE_LONG;
stoc[0].buffer=&id;
stoc[1].buffer_type=MYSQL_TYPE_STRING;
stoc[1].buffer_length=sizeof(name);
stoc[1].buffer=name;
stoc[2].buffer_type=MYSQL_TYPE_STRING;
stoc[2].buffer_length=sizeof(tell);
stoc[2].buffer=tell;
if(mysql_stmt_bind_result(stmt,stoc))
{
fprintf(stderr,"mysql_stmt_bind_result: %s\n",mysql_error(conn));
return-1;
}
if(mysql_stmt_execute(stmt))
{
fprintf(stderr,"mysql_stmt_execute: %s\n",mysql_error(conn));
return-1;
}
if(mysql_stmt_store_result(stmt))
{
fprintf(stderr,"mysql_stmt_store_result: %s\n",mysql_error(conn));
return-1;
}
printf("\n---Contact Information---\n");
printf("Name\tTell\n");
while(mysql_stmt_fetch(stmt)==0)
printf("%s\t%s\n",name,tell);
ReInfor(conn,id);//修改信息
mysql_stmt_close(stmt);
return0;
}
/*
*按名字模糊查找 显示找到所有与关键字匹配的结果,如需修改结果中的信息,则输入Number
*/
intFindByLikeName(MYSQL*conn)
{
int*num;
charname[10];
chararg[100];
intn;
printf("Input Like: ");
getchar();
scanf("%s",name);
sprintf(arg,"select * from celltable where name like '%%%s%';",name);
num=PlayAll(conn,arg);
printf("Number: ");
getchar();
n=getchar();
if(n!='\n')
{
n=n-'0';
ReInfor(conn,num[n-1]);//修改信息
}
free(num);
return0;
}
/*
*新增联系人如果联系人存在,则修改此人信息
*/
intInputInfo(MYSQL*conn)
{
int*num;
charname[10],telephone[11];
charch;
chararg[100];
printf("Name: ");//输入姓名
scanf("%s",name);
sprintf(arg,"select * from celltable where name='%s';",name);
num=PlayAll(conn,arg);
if(num)
{
ReInfor(conn,num[0]);//修改信息
}
else
{
printf("telephone: ");//输入号码
scanf("%s",telephone);
printf("Save? y/n ");//是否保存
getchar();
scanf("%c",&ch);
if(ch=='y')
{
sprintf(arg,"insert into celltable(name, telephone) values('%s', '%s');",name,telephone);//生成命令
if(mysql_query(conn,arg))//插入数据库
{
fprintf(stderr,"%s\n",mysql_error(conn));
return-1;
}
num=PlayAll(conn,"select * from celltable;");//显示所有联系人
}
else
{
printf("save fail!\n");
return0;
}
}
free(num);
}
intmain(void)
{
int*num;
MYSQL*conn=mysql_init(NULL);//初始化服务器句柄;
InitMysql(conn);//连接服务器、创建数据库
while(1)
{
switch(menu_main())
{
case1:
num=PlayAll(conn,"select * from celltable;");//显示所有联系人
free(num);
break;
case2:
FindByName(conn);
break;
case3:
FindByLikeName(conn);
break;
case4:
InputInfo(conn);
break;
case0:
mysql_close(conn);
puts("Quit!\n");
return0;
default:
break;
}
}
return0;
}
c语言实现mysql通配符_Mysql的C语言接口简单实现电话本功能相关推荐
- c语言连接mysql(入门)_MySQL入门之C语言操作MySQL
基本概念 C APIs包含在mysqlclient库文件当中,与MySQL的源代码一块发行,用于连接到数据库和执行数据库查询.#include #include #include #include # ...
- mysql通配符_mysql通配符使用
mysql通配符使用: w3cchool 在mysql查询中,经常会用到通配符,而且mysql的通配符和pgsql是有所不同的,甚至mysql中还可以使用正则表达式.本文就为大家带来mysql查询中通 ...
- mysql通配符_mysql通配符进行模糊查询
在mysql数据库中,当我们需要模糊查询的时候 ,我们会使用到通配符. 首先我们来了解一下2个概念,一个是操作符,一个是通配符. 操作符 like就是SQL语句中的操作符,它的作用是指示在SQL语句后 ...
- 易语言做mysql登录器_易语言制作数据库登录器 易语言数据库教程
易语言做的登陆器怎样利用数据库验证密码是否正确? 你这么写当然是错误的.因为你用查找功能.只要数据库里有这个结果就返回真.搜索的是全部的记录,如果密码N个人是123456,那么只要用户名对密码肯定是正 ...
- 易语言执行mysql命令行_易语言教程之MySQL[3]执行SQL语句
连接MySQL服务器后,接着就可以做点实际的操作了,比如读取记录,插入记录,修改记录等.操作MySQL有2种方法,本集讲的是第一种,适合懂MySQL语句的人,方便,学习成本低,效率高.但不懂MySQL ...
- 易语言做mysql登录器_易语言制作简单的一个登陆器
1.新建一个Windows窗口程序 2.调整窗口大小并画上一些组件,如图. 3.将第二个编辑框的输入方式设置为密码输入. 4.复制下面代码,然后双击按钮,再粘贴上去. ================ ...
- r语言 清空mysql表_用R语言做数据清理(详细教程)
数据的清理 如同列夫托尔斯泰所说的那样:"幸福的家庭都是相似的,不幸的家庭各有各的不幸",糟糕的恶心的数据各有各的糟糕之处,好的数据集都是相似的.一份好的,干净而整洁的数据至少包括 ...
- MySQL之DML(数据操纵语言)
目录 一.简介 二.INSERT(插入) 2.1.插入单条记录(INSERT INTO VALUES) 2.2.插入单条记录(INSERT INTO SET) 2.3.插入多条记录(INSERT IN ...
- mysql通配符查询字段名_mysql通配符如何查询字段
mysql通配符查询字段的方法:1.使用[%]表示任何字符出现任意次数,代码为[WHERE title like '%张三']:2.使用[_]表示单个字符,代码为[WHERE title like ' ...
- mysql通配符查询字段名_mysql通配符如何查询字段,
mysql通配符如何查询字段如何用MySQL通配符查询字段,mysql通配符查询字段的方法:1.用[%]表示任意字符出现任意次数,代码为[类似"%张三"的WHERE标题]:2.用[ ...
最新文章
- 没人比程序猿更讨厌软件
- 求幂运算、多项式乘法及Horner法则的应用
- java 用来查找输出的函数_Solr复杂查询一:函数查询
- 1012 数字分类 (20 分)(C语言实现)
- keepalived+nginx保持高可用配置
- Linux Shell脚本入门教程系列之(九)Shell判断 if else 用法
- oracle 提示存在lob,Oracle数据库出现ORA-19566 LOB坏块的处理记录
- 数学思想 —— 对称性思维
- 使用维护Relationship
- 信息系统安全等级保护备案任务详单
- 详解大型分布式电商系统架构
- 周立功ZCANPRO基础使用教程
- 字节、十六进制字符串相互转换(asc2hex、hex2asc)
- 这是不是你想要的h5手机端弹窗
- html5橡皮擦,用HTML5 Canvas API中的clearRect()方法实现橡皮擦功能
- 日期类的实现(C++编写练习类与对象)
- SpringBoot 打成的 jar 包和普通的 jar 包有什么区别
- 【四】Java设计模式GOF23之抽象工厂模式
- Win10中解决Prolific PL2303出现错误代码10的问题
- Merlin部署KMS