在熟悉mysql语法的基础上,想在自己的应用程序中使用它,应该怎么操作呢?

自然的想法就是找到相应语言的mysql接口,然后熟悉接口,对其进行调用。

具体的做法与思路如下:

  1. 找到C的mysql接口
  2. 新建MYSQL对象mysql
  3. 利用接口函数初始化对象 mysql_init(&mysql);
  4. 利用接口将数据库对象与实际数据库建立连接MYSQL *sock = mysql_real_connect(&mysql,"localhost","dbuser","dbpwd","9tmd_bbs_utf8",0,NULL,0),sock为连接句柄(句柄存放的是如窗口、按钮、图标等实例的内存地址,由于这些内存地址在内存并不是一层不变的,因此WINDOS提出句柄概念,它是一种智能指针,类似户籍管理)
  5. 连接建立成功后就可以对数据库进行操作
  6. 查询mysql_query(sock,sqlbuf);
  7. 存放查询结果 MYSQL_RES *res=mysql_store_result(sock);
  8. 对查询结果进行操作,类似操作数据库中表,操作以行为单位进行,mysql_num_fields(res)可得行数, MYSQL_ROW row= mysql_fetch_row(res)得到每行的内容
  9. 操作完结果后,将其从内存中释放,mysql_free_result(res);
  10. 最后关闭数据库句柄mysql_close(sock);完成对数据库的操作

具体实际代码如下:

下面这段代码实现了连接到本地MySQL服务器上9tmd_bbs_utf8数据库,从数据表tbb_user中根据输入的userid取得该用户的用户名并打印输出到终端。

#if defined(_WIN32) || defined(_WIN64) //为了支持windows平台上的编译
#include <windows.h>
#endif
#include <stdio.h>
#include <stdlib.h>
#include "mysql.h"  //我的机器上该文件在/usr/local/include/mysql下
 
//定义数据库操作的宏,也可以不定义留着后面直接写进代码
#define SELECT_QUERY "select username from tbb_user where userid = %d"
 
int main(int argc, char **argv) //char **argv 相当于 char *argv[]
{
    MYSQL mysql,*sock;    //定义数据库连接的句柄,它被用于几乎所有的MySQL函数
    MYSQL_RES *res;       //查询结果集,结构类型
    MYSQL_FIELD *fd ;     //包含字段信息的结构
    MYSQL_ROW row ;       //存放一行查询结果的字符串数组
    char qbuf[160];      //存放查询sql语句字符串
    
    if (argc != 2) { //检查输入参数
        fprintf(stderr,"usage : mysql_select <userid>\n\n");
        exit(1);
    }
    
    mysql_init(&mysql);
    if (!(sock = mysql_real_connect(&mysql,"localhost","dbuser","dbpwd","9tmd_bbs_utf8",0,NULL,0))) {
        fprintf(stderr,"Couldn't connect to engine!\n%s\n\n",mysql_error(&mysql));
        perror("");
        exit(1);
    }
    
    sprintf(qbuf,SELECT_QUERY,atoi(argv[1]));
    if(mysql_query(sock,qbuf)) {
        fprintf(stderr,"Query failed (%s)\n",mysql_error(sock));
        exit(1);
    }
    
    if (!(res=mysql_store_result(sock))) {
        fprintf(stderr,"Couldn't get result from %s\n", mysql_error(sock));
        exit(1);
    }
    
    printf("number of fields returned: %d\n",mysql_num_fields(res));
        
    while (row = mysql_fetch_row(res)) {
        printf("Ther userid #%d 's username is: %s\n", atoi(argv[1]),(((row[0]==NULL)&&(!strlen(row[0]))) ? "NULL" : row[0])) ; 
        puts( "query ok !\n" ) ; 
    } 
    
    mysql_free_result(res);
    mysql_close(sock);
    exit(0);
    return 0;   //. 为了兼容大部分的编译器加入此行
}
View Code

相关文章: