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终端中显示乱码。有知道的博友麻烦赐教一下。谢谢!

  • 相关阅读:
    C语言 realloc为什么要有返回值,realloc返回值具体解释/(解决随意长度字符串输入问题)。
    opencv中的vs框架中的Blob Tracking Tests的中文注释。
    Java实现 蓝桥杯VIP 算法提高 棋盘多项式
    Java实现 蓝桥杯VIP 算法提高 棋盘多项式
    Java实现 蓝桥杯VIP 算法提高 棋盘多项式
    Java实现 蓝桥杯VIP 算法提高 棋盘多项式
    Java实现 蓝桥杯VIP 算法提高 分苹果
    Java实现 蓝桥杯VIP 算法提高 分苹果
    Java实现 蓝桥杯VIP 算法提高 分苹果
    Java实现 蓝桥杯VIP 算法提高 分苹果
  • 原文地址:https://www.cnblogs.com/witer666/p/1743730.html
Copyright © 2011-2022 走看看