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

  • 相关阅读:
    [模板] AC自动机
    U32670 小凯的数字 数学
    P1993 小K的农场 差分约束系统
    P2532 [AHOI2012]树屋阶梯 卡特兰数
    [模板] manacher
    Dynamic Rankings
    CQOI2015 任务查询系统
    [POI2014]KUR-Couriers
    JSOI2008 火星人
    ZJOI2006 书架
  • 原文地址:https://www.cnblogs.com/witer666/p/1743730.html
Copyright © 2011-2022 走看看