首页 > 数据库技术 > 详细

C API 连接MySQL及批量插入

时间:2017-02-08 11:45:33      阅读:202      评论:0      收藏:0      [点我收藏+]

char buf[1024*2]={0};
const char *host;//127.0.0.1
const char *user;//root
const char *password;//123
const char *db;//所连的数据库名称
const char *port;//3306

MYSQL *mysql;
mysql_init(mysql);//初始化
if(!mysql_real_connect(mysql,host,user,password,db,port,NULL,0))
{
    CString cs;
    cs.Format("MySql数据库连接失败!\n");
    AfxMessageBox(cs);
}
//InnoDB表引擎下关闭mysql自动事务提交可以大大提高数据插入的效率,这是因为如果需要插入1000条数据,    mysql会自动发起(提交)1000次的数据写入请求,如果把autocommit关闭掉,通过程序来控制,只要一    次commit就可以搞定。

#define WRITE_ONCE_COUNT  1000  //设一个宏,表示多少条数据提交一次

int count = 0;            //设一个计数值

mysql_autocommit(mysql,0);//关闭自动提交

sprintf(buf,"insert into dxjl_infobase(Date,gpcode,Type) values(%d,‘%s‘,%d)",nDate,codes,1);

ASC2UTF8(buf,buf,sizeof(buf));//转编码,将ASC转为UTF8  以便数据库可以识别sql语句

int iSuccess = mysql_query(mysql,buf);
if(iSuccess !=0)
{
    printf("mysql_query:%s\r\n",mysql_error(mysql));
}
else
{
    count ++;
}
if(WRITE_ONCE_COUNT == count)//每WRITE_ONCE_COUNT条数据提交一次
{
    mysql_commit(mysql);
    count = 0;
}
出了循环之后加个判断,避免最后一次循环数据未达到WRITE_ONCE_COUNT,无法commit提交写库:
    if(0 < count)
    {
        mysql_commit(mysql);
    }


autocommit是事务,==1时是立即提交,==0之后遇到commit或rollback才提交。


C API 连接MySQL及批量插入

原文:http://www.cnblogs.com/SZxiaochun/p/6377257.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!