当前位置:首页 > 芯闻号 > 充电吧
[导读]如果既不想写回调函数,又想避免sqlite3_get_table之后麻烦的一维数组遍历,那么利用sqlite3_prepare_v2执行sql select语句,让后sqlite3_step遍历sel


如果既不想写回调函数,又想避免sqlite3_get_table之后麻烦的一维数组遍历,那么利用sqlite3_prepare_v2执行sql select语句,让后sqlite3_step遍历select执行的返回结果是一个非常方便的solution. 当然,你必须要明白sqlite3_prepare_v2不仅仅能够执行table的query selection,也能方便地进行sql Delete, Insert, Update等其他一些操作。它能帮你把sql语句的执行操作变的更加优雅。


[cpp] view plaincopy int sqlite3_prepare_v2(     sqlite3 *db,            /* Database handle */     const char *zSql,       /* SQL statement, UTF-8 encoded */     int nByte,              /* Maximum length of zSql in bytes. */     sqlite3_stmt **ppStmt,  /* OUT: Statement handle */     const char **pzTail     /* OUT: Pointer to unused portion of zSql */   );   [cpp] view plaincopy int sqlite3_step(sqlite3_stmt*);   下面以一段iOS中的selection查询为例说明二者的用法:



[cpp] view plaincopy -(void)InitializeFilesTable   {       const char * query = "SELECT * FROM [FileObjects]";       sqlite3_stmt * stmt;       int result = sqlite3_prepare_v2(mDatabase, query, -1, &stmt, NULL);       if(SQLITE_OK != result)       {           sqlite3_finalize(stmt);           // The table has not been created. Most likely, this is the first time we create the database.           // Therefore, create all tables in it           char * sql = "Create TABLE [FileObjects] ([FileId] VARCHAR(128),[FileExt] VARCHAR(128), [FileName] VARCHAR(128), [FileUrl] VARCHAR(128), [FileType] INT  );"; // NOXLATE           char * errMsg;           result = sqlite3_exec(mDatabase, sql, NULL, NULL, &errMsg);       }       else       {           // Select returns OK, initialize the memory model from the result           NSMutableDictionary * files = [NSMutableDictionary new];           while(sqlite3_step(stmt) == SQLITE_ROW)           {               FileObject * file = [FileObject new];                              const char * str = (const char *)sqlite3_column_text(stmt, 0);               file.FileId = str? [[NSString alloc] initWithUTF8String:str] : @"";                              str = (const char *)sqlite3_column_text(stmt, 1);               file.FileExt = str? [[NSString alloc] initWithUTF8String:str] : @"";                              str = (const char *)sqlite3_column_text(stmt, 2);               file.FileName = str? [[NSString alloc] initWithUTF8String:str] : @"";                              str = (const char *)sqlite3_column_text(stmt, 3);               file.FileUrl = str? [[NSString alloc] initWithUTF8String:str] : @"";                              file.FileType = sqlite3_column_int(stmt, 4);                              [files setObject:file forKey:file.FileId];           }                      sqlite3_finalize(stmt);           [mFiles setDictionary:files];       }   }   这其中包括对sqlite3_exec的调用。sqlite3_exec可以执行任何sql语句,包括事务("BEGIN TRANSACTION")、回滚("ROLLBACK")和提交("COMMIT")等等。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

9月2日消息,不造车的华为或将催生出更大的独角兽公司,随着阿维塔和赛力斯的入局,华为引望愈发显得引人瞩目。

关键字: 阿维塔 塞力斯 华为

加利福尼亚州圣克拉拉县2024年8月30日 /美通社/ -- 数字化转型技术解决方案公司Trianz今天宣布,该公司与Amazon Web Services (AWS)签订了...

关键字: AWS AN BSP 数字化

伦敦2024年8月29日 /美通社/ -- 英国汽车技术公司SODA.Auto推出其旗舰产品SODA V,这是全球首款涵盖汽车工程师从创意到认证的所有需求的工具,可用于创建软件定义汽车。 SODA V工具的开发耗时1.5...

关键字: 汽车 人工智能 智能驱动 BSP

北京2024年8月28日 /美通社/ -- 越来越多用户希望企业业务能7×24不间断运行,同时企业却面临越来越多业务中断的风险,如企业系统复杂性的增加,频繁的功能更新和发布等。如何确保业务连续性,提升韧性,成...

关键字: 亚马逊 解密 控制平面 BSP

8月30日消息,据媒体报道,腾讯和网易近期正在缩减他们对日本游戏市场的投资。

关键字: 腾讯 编码器 CPU

8月28日消息,今天上午,2024中国国际大数据产业博览会开幕式在贵阳举行,华为董事、质量流程IT总裁陶景文发表了演讲。

关键字: 华为 12nm EDA 半导体

8月28日消息,在2024中国国际大数据产业博览会上,华为常务董事、华为云CEO张平安发表演讲称,数字世界的话语权最终是由生态的繁荣决定的。

关键字: 华为 12nm 手机 卫星通信

要点: 有效应对环境变化,经营业绩稳中有升 落实提质增效举措,毛利润率延续升势 战略布局成效显著,战新业务引领增长 以科技创新为引领,提升企业核心竞争力 坚持高质量发展策略,塑强核心竞争优势...

关键字: 通信 BSP 电信运营商 数字经济

北京2024年8月27日 /美通社/ -- 8月21日,由中央广播电视总台与中国电影电视技术学会联合牵头组建的NVI技术创新联盟在BIRTV2024超高清全产业链发展研讨会上宣布正式成立。 活动现场 NVI技术创新联...

关键字: VI 传输协议 音频 BSP

北京2024年8月27日 /美通社/ -- 在8月23日举办的2024年长三角生态绿色一体化发展示范区联合招商会上,软通动力信息技术(集团)股份有限公司(以下简称"软通动力")与长三角投资(上海)有限...

关键字: BSP 信息技术
关闭
关闭