我是一个新手,我现在有这么一个问题:我需要对内存中的数据进行跟新,也就是把不要的delete掉,把要的从数据库中加载,存到内存中。
加载的函数叫GetRegion,通过Region的英文名(可以看成是Region的唯一ID),查询数据库中的MapElement表,记录只有一条,加载它,并存到pRegion指向的结构体中。至于myChar是我自己重定义了char类型。
函数代码如下:
- C/C++ code
myChar mySqlite::GetRegion( myChar * psRegEnName , myRegion * pRegion ){ myChar sql[256]; /* make sql */ strcpy(sql,"select ID,ChName,EnName,Data "); strcat(sql,"from MapElement "); strcat(sql,"where EnName='"); strcat(sql,psRegEnName); strcat(sql,"';"); sqlite3_prepare( pDB , sql ,-1 , &pstmt , NULL ); if ( sqlite3_step( pstmt ) != SQLITE_ROW) { #ifndef ERRORMESSAGE fprintf(stderr,"sqlite3_step failed!\n"); #endif return MYSQLITE_ERROR; } //对pstmt指向的记录进行处理,并加载到内存中。 //do something sqlite3_finalize( pstmt ); return OK;}
现在问题是这样的,我在一次更新操作时所耗费的时间很大。因为一次更新操作调用很多次这个函数,频繁打开关闭数据库,创建毁灭stmt,我认为是这个影响我更新操作的效率的。
请问我应该如何设计才能让我是更新操作的效率提升。
------解决方案--------------------------------------------------------
换个思路,看看能不能用一个SQL语句来解决?
建议你直接写出你想实现的更新功能。