【原创】sqlite线程安全实验【chad20130201】
编译sqlite时使用默认配置,启用了线程安全设置。
实验程序如下:
int Query_db( char* db_file_name )
{
printf("in %s\n",__FUNCTION__);
int ret;
sqlite3_stmt *pstmt = NULL;
char *errMsg = NULL;
char *sql = "SELECT * FROM MonthFreezeTable WHERE id<500;";//查询表中有多少列
int id;
STRUCT_TEST1 test_struct1;
STRUCT_TEST2 test_struct2;
memset(&test_struct1,0,sizeof(test_struct1));
memset(&test_struct2,0,sizeof(test_struct2));
ret = sqlite3_prepare(pdb, sql, strlen(sql), &pstmt, &errMsg);
if( ret != SQLITE_OK )
{
printf("error code :%d,reason:%s\n",ret,errMsg);
sqlite3_free( errMsg );
return -1;
}/*这一部分程序有问题*/
while( 1 )
{
ret = sqlite3_step(pstmt);
if( ret != SQLITE_ROW )
{ break; }
id = sqlite3_column_int(pstmt, 0);
printf("id = %d ",id);
usleep(10000);
}
sqlite3_finalize( pstmt ); //把刚才分配的内容析构掉
sqlite3_reset( pstmt );
return