⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 use_mysql.c

📁 linux下用程序调用mysql的一个小程序
💻 C
字号:
/*********************************************************
 *            get_out_mysql.c
 *
 *  Mon Sep 18 16:57:49 2006
 *  Copyright  2006  Spark Zheng
 *  mwishes_1014@sina.com.cn
 *********************************************************/

#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#include <strings.h>
#include <unistd.h>
#include <syslog.h>

//#include <mysql/mysql.h>
#include "/usr/include/mysql/mysql.h"

#define HOST "localhost"
#define USER "root"
#define PASSWORD "chenjie"
#define DATABASE "post1"

void mysql_handle();
void mysql_exit();

MYSQL mysql;

int main(int argc,char **argv)
{
  if(mysql_init(&mysql)== NULL)//初始化mysql结构,具体有什么作用现在还不懂
  {
           syslog(LOG_USER|LOG_INFO,"初始化MYSQL出错.\n");//syslog是向系统日志中写东西
             exit(1);
            
 }
   
    if (!mysql_real_connect(&mysql,HOST,USER,PASSWORD,DATABASE,0,NULL,0))//连接数据库
   {
                printf(/*iLOG_USER|LOG_INFO, */"打开数据库出错: %s\n",
                        mysql_error(&mysql));
          exit(1);
    }
   else
        {
          printf(/*syslog(LOG_USER|LOG_INFO,*/ "连接上数据库,等待操作:\n");
      }
   
    mysql_handle();
     
    mysql_exit();
       
    return 0;
}

void mysql_exit()
{
        mysql_close(&mysql);
}

void mysql_handle()
{
       MYSQL_RES *m_res;
   MYSQL_ROW m_row;
    MYSQL_FIELD *m_fd;
//        char *sort_dbname = "";
//   char *sort_name = "";
       char *mesg_dbname ="test";// 数据库post1中的一个表
     char *mesg_name ="*";// 和上面一句都是为了下面的sql语句服务的
   char *sel_statement;
        int row_num = 0;

        sel_statement = (char*)malloc(75*sizeof(char));
     
    sprintf(sel_statement,"select %s from %s",mesg_name,mesg_dbname);//将第二个参数中的值格式化输入第一个参数,
   printf("%s.\n",sel_statement);
 //   printf("jiu zai zhe li\n");   
    if(mysql_real_query(&mysql,sel_statement,(unsigned int)strlen(sel_statement)) != 0)//执行sql语句
     {
         printf(/*  syslog(LOG_USER|LOG_INFO,*/"Mysql查询出错:%s\n",
           mysql_error(&mysql));
             exit(2);
    }
   
    if((m_res = mysql_store_result(&mysql)) == NULL)//将sql语句的查询结果保存到一个mysql_res结构中
        {
        printf(/*   syslog(LOG_USER|LOG_INFO,*/"Mysql获取出错:%s\n",
           mysql_error(&mysql));
             exit(2);
    }

       row_num = mysql_num_rows(m_res);//查看结果集合中的行数
    printf("Now fetch %d rows \n",row_num);
int j=0;
 while( m_fd = mysql_fetch_field(m_res) )//返回作为一个MYSQL_FIELD结构的一个结果集合的一个列的定义
    {
           printf("%s\t",m_fd->name);
	   j++;//这个j只是为下面的while语句循环结束提供参数,由于这个while中每次只读到一个列,所以j的值,就是此表的列数,下面的while循环j次(0到j-1),刚好打印出每行的所有值。
       }
   printf("\n");

   int i = 0;
  while((m_row = mysql_fetch_row(m_res)))//检索一个结果集合的下一行
     {
           i=0;
               while(i<j)//j的数值是该表的列数
               {
                   printf("%s\t",m_row[i]);//执行这个循环就可以将表中的这一行全部打印出来
                    i++;
                }
           printf("over one \n");
      }

       if (mysql_errno(&mysql))
        {
       printf(/*    syslog(LOG_USER|LOG_INFO,*/"Mysql出错:%s\n",mysql_error(&mysql));
         exit(2);
    }

       mysql_free_result(m_res);//释放由mysql_store_result()、mysql_use_result()等为一个结果集合分配的内存
       free(sel_statement);//释放malloc函数分配的内存
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -