SQLLite (四):sqlite3_prepare_v2,sqlite3_step

SQLLite (四):sqlite3_prepare_v2,sqlite3_step,第1张

概述如果既不想写回调函数,又想避免 sqlite3_get_table之后麻烦 的一维数组遍历,那么利用sqlite3_prepare_v2执行sql select语句,让后sqlite3_step遍历select执行的返回结果是一个非常方便的solution. 当然,你必须要明白sqlite3_prepare_v2不仅仅能够执行table的query selection,也能方便地进行sql Del 如果既不想写回调函数,又想避免 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 plain copy intsqlite3_prepare_v2( sqlite3*db,<spanstyle="color:#009900;">/*Databasehandle*/</span> constchar*zsql,<spanstyle="color:#009900;">/*sqlstatement,UTF-8encoded*/</span> intnByte,0); background-color:inherit">/*Maximumlengthofzsqlinbytes.*/</span> sqlite3_stmt**ppStmt,0); background-color:inherit">/*OUT:Statementhandle*/</span> char**pzTail<spanstyle="color:#009900;">/*OUT:Pointertounusedportionofzsql*/</span> ); copy intsqlite3_step(sqlite3_stmt*); 下面以一段iOS中的selection查询为例说明二者的用法:

copy -(voID)Initializefilestable { char*query="SELECT*FROM[fileObjects]"; sqlite3_stmt*stmt; intresult=sqlite3_prepare_v2(mDatabase,query,-1,&stmt,NulL); if(sqlITE_OK!=result) { sqlite3_finalize(stmt); <spanstyle="color:#009900;">//Thetablehasnotbeencreated.Mostlikely,thisisthefirsttimewecreatethedatabase. //Therefore,createalltablesinit</span> char*sql="Createtable[fileObjects]([fileID]VARCHAR(128),[fileExt]VARCHAR(128),[filename]VARCHAR(128),[fileUrl]VARCHAR(128),[fileType]INT);";<spanstyle="color:#009900;">//NOXLATE</span> char*errMsg; result=sqlite3_exec(mDatabase,sql,NulL,&errMsg); } else //SelectreturnsOK,initializethememorymodelfromtheresult</span> NSMutableDictionary*files=[NSMutableDictionarynew]; while(sqlite3_step(stmt)==sqlITE_ROW) fileObject*file=[fileObjectnew]; char*str=(char*)sqlite3_column_text(stmt,0); file.fileID=str?[[Nsstringalloc]initWithUTF8String:str]:@""; str=(file.fileExt=str?[[Nsstringalloc]initWithUTF8String:str]:@""; str=(file.filename=str?[[Nsstringalloc]initWithUTF8String:str]:@""; file.fileUrl=str?[[Nsstringalloc]initWithUTF8String:str]:@""; file.fileType=sqlite3_column_int(stmt,4); [filessetobject:fileforKey:file.fileID]; [mfilessetDictionary:files]; } 这其中包括对sqlite3_exec的调用。sqlite3_exec可以执行任何SQL语句,包括事务( "BEGIN TRANSACTION" )、回滚( "RolLBACK")和提交( "COMMIT")等等。 总结

以上是内存溢出为你收集整理的SQLLite (四):sqlite3_prepare_v2,sqlite3_step全部内容,希望文章能够帮你解决SQLLite (四):sqlite3_prepare_v2,sqlite3_step所遇到的程序开发问题。

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

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/1170441.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-02
下一篇 2022-06-02

发表评论

登录后才能评论

评论列表(0条)

保存