导出mysql实例中的数据(代码部分实现)

void czwsql::sql_ResultReset(ZWSQL *zwsql,string&res)
{
ZWSQL_RES * result;
ZWSQL_ROW row;
m_fixresult=new char[1024*1024*5];
int irow;
int maxlen=10*1024;
char *charRes=m_fixresult;
memset(charRes,0,maxlen);
char *pRes=charRes;
if((result=zwsql_use_result(zwsql)))
{
int fieldnum=zwsql_num_fields(result);
while((row=zwsql_fetch_row(result)))
{
for(irow=0;irow<fieldnum;irow++)
{
if(row[irow]!=NULL)
{
if(maxlen-(pRes-charRes)<(int)strlen(row[irow])+1)
{
res+=charRes;
pRes=charRes;
}
memcpy(pRes,row[irow],strlen(row[irow]));
pRes+=strlen(row[irow]);
}
else if(maxlen-(pRes-charRes)<10)
{
res+=charRes;
pRes=charRes;
}
if(irow<fieldnum-1)
{
//列集间加"\t",最后一列不附加
memcpy(pRes,"\t",1);
pRes++;
}
}
//行间"\n"
memcpy(pRes,"\n",1);
pRes++;
}
if(maxlen-(pRes-charRes)<10)
{
res+=charRes;
pRes=charRes;
}
memcpy(pRes,"\0",1)
pRes++;
zwsql_free_result(result);
}
res+=charRes;
H_replace(res,"(null)","");
}

int H_replace(string &src_str,const string old_str,const string &new_str)
{
int count=0;
int old_str_len=old_str.length(),new_str_len=new_str.length();
std::string::size_type pos=0;
while((pos=src_str.find(old_str,pos))!=string::npos)
{
src_str.replace(pos,old_str_len,new_str);
pos+=new_str_len;
++count;
}
return count;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值