linux下C语言连接mysql

linux下C语言连接mysql
#include<stdlib.h>
#include<stdio.h>
#include<mysql/mysql.h>

MYSQL mysql;
void doQuery() {
    MYSQL_ROW m_row;
    MYSQL_RES *m_res;
    MYSQL_FIELD *m_field;
    char sql[1024];

    sprintf(sql,"select * from account");
    if(mysql_query(&mysql,sql) != 0) {
        printf("mysql_query err: %s\n",mysql_error(&mysql));
    }
    m_res = mysql_store_result(&mysql);
    if(m_res==NULL) {
        printf("get result err: %s\n",mysql_error(&mysql));
    }
    while( (m_field = mysql_fetch_field(m_res)) ) {
        printf("field name %s\n", m_field->name);
    }
    int num_fields = mysql_num_fields( m_res );
    for( int i = 0; i<num_fields; i++) {
        m_field = mysql_fetch_field_direct( m_res, i);
        printf("Field %d is %s\n", i, m_field->name);
    }
    while( ( m_row = mysql_fetch_row( m_res ) ) != NULL ) {
        num_fields = mysql_num_fields( m_res );
        for ( int i=0; i<num_fields; i++) {
            printf("%s\n", m_row[i] != NULL ? m_row[i] : "NULL");
        }
    }
    mysql_free_result(m_res);
}
int main() {
    char host[32] = "localhost";
    char user[32] = "root";
    char passwd[32] = "";
    char db[32] = "test";

    if( mysql_init(&mysql) == NULL ) {
        printf( "init mysql err!\n" );
        return -1;
    }
    if (mysql_real_connect(&mysql,host,user,passwd,db,0,NULL,0) == NULL) {
        printf("Connect to mysql Error:%s!\n",mysql_error(&mysql));
        return -1;
    }
    else {
        puts("Connect to mysql success!");
    }

    doQuery();
    mysql_close(&mysql);
    return 0;
}

编译需要链接mysqlclient库和zlib库(所以需要保证系统中安装了mysqlclient和c连接mysql的库
例如本例子中:
g++ test.cpp -o test.exe -L/usr/lib/mysql -lmysqlclient -lz
安装的位置不同-L/usr/lib/mysql要作相应修改。比如在64位下,就是-L/usr/lib64/mysql

连接数据库
mysql_real_connect(数据库句柄,主机名,用户名,密码,数据库名,端口,命名管道,客户端标记)
代码:
mysql_init(&mysql);
if(!mysql_real_connect(&mysql,"localhost","root","1","mydb",3306,NULL,0))
    puts("数据库连接错误!");

如果连接成功,就可以进行数据库的读写了:
1.mysql_query()                    //提交查询语句
2.mysql_use_result()                //获取上一次查询的结果集
3.mysql_fetch_row()                //从结果集中获取单项内容
4.mysql_free_result()            //释放结果集
5.mysql_fetch_lengths(result)    //取得一行中每个字段的内容的长度。
其他相关函数例如:
mysql_fetch_array()、mysql_fetch_assoc()、mysql_fetch_object() 或 mysql_fetch_row()......

另外
mysql_character_set_name()//返回字符集名字
mysql_options(MYSQL *mysql, enum mysql_option option, const char *arg)        //设置额外的连接参数
例如:ret = mysql_options(conn, MYSQL_SET_CHARSET_NAME, "gb2312");

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值