zoukankan      html  css  js  c++  java
  • Redhat C++连接Mysql数据库

    一、代码如下

    #include "/usr/local/mysql/include/mysql/mysql.h"

    #include <stdio.h>

    int main(int argc,char *argv[])

    {

    char *user="root",*pwd="123456",*dbname="test";

    MYSQL mysql;

    MYSQL_RES *mysql_ret;

    MYSQL_ROW row;

    unsigned long num_rows;

    int ret;

    mysql_init(&mysql);

    if(mysql_real_connect(&mysql,NULL,user,pwd,dbname,0,NULL,0))

    {

    printf("Connectionsuccess!\n");

    mysql_query(&mysql,"set names 'latin1'");

    ret=mysql_query(&mysql,"select * from sys_userinfo limit 5");

    if(!ret)

    {

    printf("查询成功!");

    mysql_ret=mysql_store_result(&mysql);

    if(mysql_ret!=NULL)

    {

    num_rows=mysql_num_rows(mysql_ret);

    if(num_rows!=0)

    {

    printf("%d\n",num_rows);

    while(row=mysql_fetch_row(mysql_ret))

    {

    printf("%s\t%s\t%s\t%s\t%s\t%s\n",row[0],row[1],row[2],row[3],row[4],row[5]);

    }

    }

    else

    {

    return -1;

    }

    mysql_free_result(mysql_ret);

    return 0;

    }

    else

    {

    return -1;

    }

    }else{

    return -1;

    }

    mysql_close(&mysql);

    }else{

    return -1;

    }

    }

    g++ mysqlconn.c -o mysqlconn -lmysqlclient -L/usr/local/mysql/lib/mysql/

    ./mysqlconn

    二、Mysql.h文件中mysql 的源码包中。

    Libmysqlclient.so.15错误为ldconfig链接引用无加载libmysqlclient.so文件

    Cd /etc/ld.so.conf.d

    Vi mysql-i386.conf

    加入/usr/local/mysql/lib/mysql代码OK。

    三、Mysql C API

    my_ulonglong STDCALL mysql_num_rows(MYSQL_RES *res);//获取数据集行数
    unsigned int STDCALL mysql_num_fields(MYSQL_RES *res);//获取数据集字段数
    my_bool STDCALL mysql_eof(MYSQL_RES *res);
    MYSQL_FIELD *STDCALL mysql_fetch_field_direct(MYSQL_RES *res,
                              unsigned int fieldnr);
    MYSQL_FIELD * STDCALL mysql_fetch_fields(MYSQL_RES *res);//根据字段循环数据集(字段名)

    MYSQL_ROW    STDCALL mysql_fetch_row(MYSQL_RES *result);//根据行循环数据库集(从0开始的字段序号)
    MYSQL_ROW_OFFSET STDCALL mysql_row_tell(MYSQL_RES *res);
    MYSQL_FIELD_OFFSET STDCALL mysql_field_tell(MYSQL_RES *res);

    unsigned int STDCALL mysql_field_count(MYSQL *mysql);
    my_ulonglong STDCALL mysql_affected_rows(MYSQL *mysql);//获取影响行数
    my_ulonglong STDCALL mysql_insert_id(MYSQL *mysql);//获取插入ID
    unsigned int STDCALL mysql_errno(MYSQL *mysql);//错误号
    const char * STDCALL mysql_error(MYSQL *mysql);//错误详细信息
    const char *STDCALL mysql_sqlstate(MYSQL *mysql);
    unsigned int STDCALL mysql_warning_count(MYSQL *mysql);
    const char * STDCALL mysql_info(MYSQL *mysql);
    unsigned long STDCALL mysql_thread_id(MYSQL *mysql);
    const char * STDCALL mysql_character_set_name(MYSQL *mysql);
    int          STDCALL mysql_set_character_set(MYSQL *mysql, const char *csname);

    MYSQL *        STDCALL mysql_init(MYSQL *mysql);//初始化
    my_bool        STDCALL mysql_ssl_set(MYSQL *mysql, const char *key,
                          const char *cert, const char *ca,
                          const char *capath, const char *cipher);
    const char *    STDCALL mysql_get_ssl_cipher(MYSQL *mysql);
    my_bool        STDCALL mysql_change_user(MYSQL *mysql, const char *user,
                          const char *passwd, const char *db);
    MYSQL *        STDCALL mysql_real_connect(MYSQL *mysql, const char *host,
                           const char *user,
                           const char *passwd,
                           const char *db,
                           unsigned int port,
                           const char *unix_socket,
                           unsigned long clientflag);//连接MYSQL
    int        STDCALL mysql_select_db(MYSQL *mysql, const char *db);//切换数据库
    int        STDCALL mysql_query(MYSQL *mysql, const char *q);//增,删,改,查
    int        STDCALL mysql_send_query(MYSQL *mysql, const char *q,
                         unsigned long length);
    int        STDCALL mysql_real_query(MYSQL *mysql, const char *q,
                        unsigned long length);
    MYSQL_RES *     STDCALL mysql_store_result(MYSQL *mysql);
    MYSQL_RES *     STDCALL mysql_use_result(MYSQL *mysql);

    /* perform query on master */
    my_bool        STDCALL mysql_master_query(MYSQL *mysql, const char *q,
                           unsigned long length);
    my_bool        STDCALL mysql_master_send_query(MYSQL *mysql, const char *q,
                            unsigned long length);
    /* perform query on slave */ 
    my_bool        STDCALL mysql_slave_query(MYSQL *mysql, const char *q,
                          unsigned long length);
    my_bool        STDCALL mysql_slave_send_query(MYSQL *mysql, const char *q,
                               unsigned long length);
    void        STDCALL mysql_get_character_set_info(MYSQL *mysql,
                               MY_CHARSET_INFO *charset);

    更具体的可以查看mysql.h文件代码

    四、查询出来的数据库在Redhat终端中显示乱码。有知道的博友麻烦赐教一下。谢谢!

  • 相关阅读:
    SharePoint 2013 图文开发系列之自定义字段
    SharePoint 2013 图文开发系列之Visual Studio 创建母版页
    SharePoint 2013 图文开发系列之代码定义列表
    SharePoint 2013 图文开发系列之计时器任务
    SharePoint 2013 图文开发系列之应用程序页
    SharePoint 2013 图文开发系列之事件接收器
    SharePoint 2013 图文开发系列之可视化WebPart
    SharePoint 2013 图文开发系列之WebPart
    SharePoint 2013 对二进制大型对象(BLOB)进行爬网
    SharePoint 2013 状态机工作流之日常报销示例
  • 原文地址:https://www.cnblogs.com/witer666/p/1743730.html
Copyright © 2011-2022 走看看