MYSQL C API的简单应用 windows下

67 篇文章 0 订阅
21 篇文章 0 订阅
#include <stdio.h>

#include <WinSock2.h> //仅windows下
#include <mysql.h>
#pragma comment(lib,"libmysql.lib") //unix下可静态链接libmysqlclient.a
 
int main(int argc, char* argv[], char* envp[])
{
 
    //调用mysql_library_init()和mysql_library_end()的目的在于,为MySQL库提供恰当的初始化和结束处理。
    mysql_library_init(NULL,NULL,NULL);
 
     //分配或初始化与mysql_real_connect()相适应的MYSQL对象。
    MYSQL mysql;
    mysql_init(&mysql);
 
    //尝试与运行在主机上的MySQL数据库引擎建立连接。
    //在你能够执行需要有效MySQL连接句柄结构的任何其他API函数之前,mysql_real_connect()必须成功完成。
    if (!mysql_real_connect(&mysql, "localhost", "root", "chuangke","test_mysql_db",3306,NULL,NULL))
    {
        fprintf(stderr,"%s",mysql_error(&mysql));
        exit(1);
    }
 
    //该函数用于为当前连接设置默认的字符集。
    if (mysql_set_character_set(&mysql,"gbk"))
    {
        fprintf(stderr,"%s",mysql_error(&mysql));     
        exit(1);
    }
 
    //如果模式为“1”,启用autocommit模式;如果模式为“0”,禁止autocommit模式。
    mysql_autocommit(&mysql,0);
 
    //执行由“Null终结的字符串”查询指向的SQL查询。
    //mysql_query()不能用于包含二进制数据的查询,应使用mysql_real_query()取而代之
    //(二进制数据可能包含字符‘\0’,mysql_query()会将该字符解释为查询字符串结束)。
    if (mysql_query(&mysql,"insert into `Users`(`username`,`password`)values('王五','abc123')"))
    {
        fprintf(stderr,"%s",mysql_error(&mysql));
        exit(1);
    }
 
    //回滚当前事务。
    mysql_rollback(&mysql);
 
    //提交当前事务。
    //mysql_commit(&mysql);
 
    if (mysql_query(&mysql,"select * from `Users`"))
    {
        fprintf(stderr,"%s",mysql_error(&mysql));
        exit(1);
    }
 
    //检索完整的结果集至客户端。
    MYSQL_RES *rs=mysql_store_result(&mysql);
    if (rs==NULL)
    {
        fprintf(stderr,"%s",mysql_error(&mysql));
        exit(1);
    }
 
    //返回结果集中的行数。
    printf("found %u rows.\n",mysql_num_rows(rs));
 
    //从结果集中获取下一行
    MYSQL_ROW row;
    while( (row=mysql_fetch_row(rs))!=NULL )
    {
        printf("%s,%s,%s\n",row[0],row[1],row[2]);
    }
 
    //释放结果集使用的内存。
    mysql_free_result(rs);
 
    //关闭前面打开的连接。
    mysql_close(&mysql);
 
    mysql_library_end();
 
    return 0;
}


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值