mysql blob 转cstring,SQLITE BLOB二进制文件读取

搜索热词

JMutexAutoLock autolock( &dbJMutex );

CString strTemp ;

//1.连接到数据库

//2.添加数据

//3.关闭数据库

try

{

time_t t ;

time(&t);

INT64 n64time = t;

char **dbResult;

char *errmsg;

int nRow,nColumn;

int index = 0;

int i,j,rc;

rc = sqlite3_open("E:\\EmsServer\\bin\\EMS_DB.db",&m_sqliteDB.mpDB);

if( rc != sqlITE_OK )

{

fprintf(stderr,"Can't open database: %s\n",sqlite3_errmsg(m_sqliteDB.mpDB));

sqlite3_close(m_sqliteDB.mpDB);

exit(1);

}

rc = sqlite3_get_table( m_sqliteDB.mpDB,"select * from t_template_tasks",&dbResult,&nRow,&nColumn,&errmsg);

if (rc == sqlITE_OK)

{

printf("表格共%d 记录!\n",nRow);

printf("表格共%d 列!\n",nColumn);

// 前两个字段为字段名 field0,field1,row[0][0],row[0][1],row[1][0],row[1][1] ... ... ....

// 是一维数组,不是二维数组,反正记着第0,第1列的值为字段名,然后才是字段值;

printf( "字段名|字段值\n");

printf( "%s | %s\n",dbResult[0],dbResult[1]);

printf("--------------------------------\n");

index = nColumn; //字段值从index开始呀

for( i = 0; i < nRow ; i++ )

{

for( j = 0 ; j < nColumn; j++ )

{

printf( "%-5s ",dbResult[index++]);

}

printf("\n");

}

printf("--------------------------------\n");

}

int nCount = m_sqliteDB.execScalar(_T("select max(tempid) from t_template_tasks") );

nCount += 1;

strTemp.Format(" insert into t_template_tasks(tempid,tempname,tasktime,usedcount,taskinfo) values( %d,'%s',%d,?)",nCount,n64time,0);

//存入

sqlite3_stmt * stat;

sqlite3_prepare( m_sqliteDB.mpDB,strTemp,-1,&stat,0 );

sqlite3_bind_blob( stat,1,taskinfo,taskinfolen,NULL );

int result = sqlite3_step( stat );

sqlite3_finalize( stat ); //把刚才分配的内容析构掉

//取出

sqlite3_stmt * stat2;

sqlite3_prepare( m_sqliteDB.mpDB,&stat2,0 );

int result2 = sqlite3_step( stat2 );

//此处取出

while ( result2 == sqlITE_ROW )

{

int id = sqlite3_column_int( stat2,0 );

const unsigned char *name = sqlite3_column_text( stat2,1 );

int time = sqlite3_column_int( stat2,2 );

int count = sqlite3_column_int( stat2,3 );

const void * pFileContent = sqlite3_column_blob( stat2,4 );

int len = sqlite3_column_bytes( stat2,4 );

printf(" %d,%s,%d\n",id,name,time );

result2 = sqlite3_step( stat2 );

}

sqlite3_reset(stat2); sqlite3_finalize( stat2 ); //把刚才分配的内容析构掉 sqlite3_close(m_sqliteDB.mpDB);

总结

如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值