mysql编程入门以实例为引导

  


# include & lt; stdio.h>
# include & lt; stdlib.h>
# include & lt; string.h>
# include & lt; mysql/mysql.h>
////unsigned int mysql_errno (mysql * mysql)

/*
int, mysql_init (mysql, * 处理)
{mysql
tmphandle=(mysql ) malloc (sizeof (mysql));
//.....
//?br/>
处理=tmphandle;
}

int主要()
{

 mysql编程入门以实例为引导

 <代码> int,,ret=0,我=0;
  
  MYSQL,mysql;
  MYSQL,*连接=零;,,
  连接=mysql_init(和mysql);
  如果(连接==NULL)
  {
  ,,ret=mysql_errno(和mysql);
  ,,printf (“func mysql_init()犯错\ n");
  ,,返回受潮湿腐烂;
  }
  printf (“func mysql_init()好\ n");
  连接=mysql_real_connect(连接、“localhost",“root",“mysql",“pos", 0, NULL, 0);
  如果(连接==NULL)
  {
  ,,ret=mysql_errno(和mysql);
  ,,printf (“func mysql_init()犯错\ n");
  ,,返回受潮湿腐烂;
  }
  printf (“func mysql_real_connect()好\ n");//查询
  const char *查询=皊elect * from emp";
  ret=mysql_query(及mysql查询);
  如果(ret !=0)
  {
  ,,ret=mysql_errno(和mysql);
  ,,printf (“func mysql_query()犯错\ n");
  ,,返回受潮湿腐烂;
  }//typedef char * * MYSQL_ROW;,,,,,,,/*返回数据的数组字符串*///typedef unsigned int MYSQL_FIELD_OFFSET;*//*抵消当前字段//获取结果集合//结果集合中可以含有10行数据
  MYSQL_RES *结果=mysql_store_result(和mysql);
  如果(结果==NULL)
  {
  ,,ret=mysql_errno(和mysql);
  ,,printf (“func mysql_query()犯错\ n");
  ,,返回受潮湿腐烂;
  
  }
  unsigned int, num=mysql_field_count(和mysql);//从mysql句柄中获取列
  
  MYSQL_FIELD, *字段=作用(结果);//获取表头地址结构体
  (我=0;i 

}
这个程序一个很大的问题就是一个入口多个出口,怎么改呢?
即错误处理都让他只有一个出口即可,提示goto语句,后面再详细说
有了上面的知识,实践一下
实现一个小小的mysql工具
# include & lt; stdio.h>
# include & lt; stdlib.h>
# include & lt; string.h>
# include & lt; mysql/mysql.h>
int主要(int命令行参数个数,char * argv)
{
int,,ret=0,我=0;

 <代码> MYSQL,mysql;
  MYSQL,*连接=零;
  字符,,sqlbuf [2048];
  
  连接=mysql_init(和mysql);,,,
  如果(连接==NULL)
  {
  ,,ret=mysql_errno(和mysql);
  ,,printf (“func mysql_init()犯错\ n");
  ,,返回受潮湿腐烂;
  }
  printf (“func mysql_init()好\ n");
  
  连接=mysql_real_connect(连接、“localhost",“root",“123456”、“mydb2", 0, NULL, 0);
  如果(连接==NULL)
  {
  ,,ret=mysql_errno(和mysql);
  ,,printf (“func mysql_init()犯错\ n");
  ,,返回受潮湿腐烂;
  }
  printf (“func mysql_real_connect()好\ n");
  
  (,)
  {
  ,,memset (sqlbuf 0 sizeof (sqlbuf));
  ,,printf (“\ nplease进入你的sql:“);
  ,,fgets (sqlbuf sizeof (sqlbuf), stdin);
  ,,但[strlen (sqlbuf) 1]=0;
  ,,/*退出(退出):退出*/,
  ,,如果(0==strncmp (sqlbuf,“exit"4)| | 0==strncmp (sqlbuf,“EXIT"4)| |
  ,,,,0==strncmp (sqlbuf,“quit"4)| | 0==strncmp (sqlbuf,“QUIT"4))
  ,,{
  ,,,,打破;
  ,,}
  
  ,,ret=mysql_query(和mysql,“组名称utf8");//避免中文乱码
  ,,如果(ret !=0)
  ,,{
  ,,,,ret=mysql_errno(和mysql);
  ,,,,printf (“func mysql_query()犯错\ n");
  ,,,,返回受潮湿腐烂;
  ,,}
  
  ,,ret=mysql_query(和mysql, sqlbuf);
  ,,如果(ret !=0)
  ,,{
  ,,,,ret=mysql_errno(和mysql);
  ,,,,printf (“func mysql_query()犯错\ n");
  ,,,,返回受潮湿腐烂;
  ,,}
  
  ,,如果(strncmp(“选择”sqlbuf 6)==0 | |, strncmp(“选择”sqlbuf 6)==0)
  ,,{
  ,,,,//获取结果集合
  ,,,,//结果集合中可以含有10行数据
  ,,,,MYSQL_RES *结果=mysql_store_result(和mysql);
  
  ,,,,//使用的过程中在获取结果
  ,,,,//MYSQL_RES *结果=mysql_use_result(和mysql);
  ,,,,//,,,null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null

mysql编程入门以实例为引导