




已阅读5页,还剩12页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
外文原文THECONNECTIONLIFECYCLECONNECTIONSARETHESOLEMEANSTHROUGHWHICHTOOPERATEONADATABASETHECONNECTIONLIFECYCLECONSISTSOFTHREEPHASES1CONNECTTOTHEDATABASECONNECTINGINVOLVESCREATINGADATABASECONNECTIONOBJECTOFSOMESORTTHECONNECTIONOBJECTMANAGESTRANSACTIONSTHROUGHITSASSOCIATEDPAGER,OFTENPERFORMSSIMPLEONESTEPQUERIESUSINGTHEWRAPPEDQUERYFUNCTIONS,ANDCREATESSTATEMENTOBJECTSFORPREPAREDQUERIES2PERFORMTRANSACTIONSASYOUKNOW,ALLCOMMANDSAREEXECUTEDWITHINTRANSACTIONSBYDEFAULT,ADATABASECONNECTIONRUNSINAUTOCOMMITMODETHISMEANSTHATEVERYSQLCOMMANDITEXECUTESRUNSUNDERITSOWNINDEPENDENTTRANSACTIONTHEALTERNATIVEISTOMANUALLYDECLARETRANSACTIONSUSINGBEGINCOMMITINTHISSCENARIO,MULTIPLECOMMANDSCANRUNTOGETHERWITHINTHESAMETRANSACTION3DISCONNECTFROMTHEDATABASEDISCONNECTINGFROMADATABASEINVOLVESCLOSINGTHEDATABASEFILEANDTHEFILESOFANYATTACHEDDATABASESOTHERACTIVITIESINVOLVEDWITHQUERYPROCESSINGINCLUDEHANDLINGERRORS,BUSYCONDITIONS,ANDSCHEMACHANGES,ALLOFWHICHAREDONETHROUGHTHEUTILITYFUNCTIONSCOVEREDINTHEFOLLOWINGSECTIONSCONNECTINGTOADATABASECONNECTINGTOADATABASEINVOLVESLITTLEMORETHANOPENINGAFILEEVERYSQLITEDATABASEISSTOREDINASINGLEOPERATINGSYSTEMFILEONEDATABASETOONEFILETHEFUNCTIONUSEDTOCONNECT,OROPEN,ADATABASEINTHECAPIISSQLITE3_OPEN,ANDISBASICALLYJUSTASYSTEMCALLFOROPENINGAFILESQLITECANALSOCREATEINMEMORYDATABASESINMOSTEXTENSIONS,IFYOUUSEMEMORYORANEMPTYSTRINGASTHENAMEFORTHEDATABASE,ITWILLCREATETHEDATABASEINRAMTHEDATABASEWILLONLYBEACCESSIBLETOTHECONNECTIONTHATCREATEDITITCANNOTBESHAREDWITHOTHERCONNECTIONSFURTHERMORE,THEDATABASEWILLONLYLASTFORTHEDURATIONOFTHECONNECTIONITISDELETEDFROMMEMORYWHENTHECONNECTIONCLOSESWHENYOUCONNECTTOADATABASEONDISK,SQLITEOPENSAFILE,IFITEXISTSIFYOUTRYTOOPENAFILETHATDOESNTEXIST,SQLITEWILLASSUMETHATYOUWANTTOCREATEANEWDATABASEINTHISCASE,SQLITEDOESNTIMMEDIATELYCREATEANEWOPERATINGSYSTEMFILEITWILLONLYCREATEANEWFILEIFYOUPUTSOMETHINGINTOTHENEWDATABASECREATEATABLEORVIEWOROTHERDATABASEOBJECTIFYOUJUSTOPENANEWDATABASE,DONOTHING,ANDCLOSEIT,SQLITEDOESNOTBOTHERWITHCREATINGADATABASEFILEITWOULDJUSTBEANEMPTYFILEANYWAYTHEREISALSOANOTHERREASONFORNOTCREATINGANEWFILERIGHTAWAYCERTAINDATABASEOPTIONS,SUCHASENCODING,PAGESIZE,ANDAUTOVACUUM,CANONLYBESETBEFOREYOUCREATEADATABASEBYDEFAULT,SQLITEUSESA1,024BYTEPAGESIZEHOWEVER,YOUCANUSEDIFFERENTPAGESIZESRANGINGFROM512TO32,768BYTESBYPOWERSOF2YOUMIGHTWANTTOUSEDIFFERENTPAGESIZESFORPERFORMANCEREASONSFOREXAMPLE,SETTINGTHEPAGESIZETOMATCHTHEOPERATINGSYSTEMSPAGESIZECANSOMETIMESMAKEI/OMOREEFFICIENTSOMETIMESLARGERPAGESIZESHELPWITHAPPLICATIONSTHATDEALWITHALOTOFBINARYDATAYOUSETTHEDATABASEPAGESIZEUSINGTHEPAGE_SIZEPRAGMAENCODINGISANOTHERPERMANENTDATABASESETTINGYOUSPECIFYADATABASESENCODINGUSINGTHEENCODINGPRAGMA,WHICHCANBEUTF8,UTF16,UTF16LELITTLEENDIAN,ANDUTF16BEBIGENDIANFINALLYTHEREISAUTOVACUUM,WHICHYOUSETWITHTHEAUTO_VACUUMPRAGMAWHENATRANSACTIONDELETESDATAFROMADATABASE,SQLITESDEFAULTBEHAVIORISTOKEEPTHEDELETEDPAGESAROUNDFORRECYCLINGTHEDATABASEFILEREMAINSTHESAMESIZETOFREETHEPAGES,YOUMUSTEXPLICITLYISSUEAVACUUMCOMMANDTORECLAIMTHEUNUSEDSPACETHEAUTOVACUUMFEATURECAUSESSQLITETOAUTOMATICALLYSHRINKTHEDATABASEFILEWHENDATAISDELETEDTHISFEATUREISOFTENMOREUSEFULINEMBEDDEDAPPLICATIONSWHERESTORAGEISAPREMIUMONCEYOUOPENADATABASEFILEORMEMORYITWILLBEREPRESENTEDINTERNALLYBYANOPAQUESQLITE3CONNECTIONHANDLETHISHANDLEREPRESENTSASINGLECONNECTIONTOADATABASECONNECTIONOBJECTSINEXTENSIONSABSTRACTTHISHANDLE,ANDSOMETIMESIMPLEMENTMETHODSTHATCORRESPONDTOAPIFUNCTIONSTHATTAKETHEHANDLEASANARGUMENTEXECUTINGPREPAREDQUERIESASSTATEDEARLIER,THEPREPAREDQUERYMETHODISTHEACTUALPROCESSBYWHICHSQLITEEXECUTESALLSQLCOMMANDSEXECUTINGASQLCOMMANDISATHREESTEPPROCESSPREPARATIONTHEPARSER,TOKENIZER,ANDCODEGENERATORPREPARETHESQLSTATEMENTBYCOMPILINGITINTOVDBEBYTECODEINTHECAPI,THISISPERFORMEDBYTHESQLITE3_PREPAREFUNCTION,WHICHTALKSDIRECTLYTOTHECOMPILERTHECOMPILERCREATESASQLITE3_STMTHANDLESTATEMENTHANDLETHATCONTAINSTHEBYTECODEANDALLOTHERRESOURCESNEEDEDTOEXECUTETHECOMMANDANDITERATEOVERTHERESULTSETIFTHECOMMANDPRODUCESONEEXECUTIONTHEVDBEEXECUTESTHEBYTECODEEXECUTIONISASTEPWISEPROCESSINTHECAPI,EACHSTEPISINITIATEDBYSQLITE3_STEP,WHICHCAUSESTHEVDBETOSTEPTHROUGHTHEBYTECODETHEFIRSTCALLTOSQLITE3_STEPUSUALLYACQUIRESALOCKOFSOMEKIND,WHICHVARIESACCORDINGTOWHATTHECOMMANDDOESREADSORWRITESFORSELECTSTATEMENTS,EACHCALLTOSQLITE3_STEPPOSITIONSTHESTATEMENTHANDLESCURSORONTHENEXTROWOFTHERESULTSETFOREACHROWINTHESET,ITRETURNSSQLITE_ROWUNTILITREACHESTHEEND,WHEREUPONITRETURNSSQLITE_DONEFOROTHERSQLSTATEMENTSINSERT,UPDATE,DELETE,ETC,THEFIRSTCALLTOSQLITE3_STEPCAUSESTHEVDBETOPROCESSTHEENTIRECOMMANDFINALIZATIONTHEVDBECLOSESTHESTATEMENTANDDEALLOCATESRESOURCESINTHECAPI,THISISPERFORMEDBYSQLITE3_FINALIZE,WHICHCAUSESTHEVDBETOTERMINATETHEPROGRAMANDCLOSETHESTATEMENTHANDLEHOWEVER,IFATRANSACTIONISMANUALLYSTARTED,ITMUSTBEMANUALLYCOMMITTEDORROLLEDBACK,ORSQLITE3_FINALIZEWILLRETURNANERRORWHENSQLITE3_FINALIZEISSUCCESSFUL,ALLRESOURCESASSOCIATEDWITHTHESTATEMENTOBJECTAREFREEDINAUTOCOMMITMODE,ITALSORELEASESTHEASSOCIATEDDATABASELOCKEACHSTEPPREPARATION,EXECUTION,FINALIZATIONCORRESPONDSTOARESPECTIVESTATEMENTHANDLESTATEPREPARED,ACTIVE,ORFINALIZEDPREPAREDMEANSTHATALLNECESSARYRESOURCESHAVEBEENALLOCATEDANDTHESTATEMENTISREADYTOBEEXECUTED,BUTNOTHINGHASBEENSTARTEDNOLOCKHASBEENACQUIRED,NORWILLALOCKBEACQUIREDUNTILTHEFIRSTCALLTOSQLITE3_STEPTHEACTIVESTATESTARTSWITHTHEFIRSTCALLTOSQLITE3_STEPATTHATPOINTTHESTATEMENTISINTHEPROCESSOFBEINGEXECUTEDANDSOMEKINDOFLOCKISINPLAYFINALIZEDMEANSTHATTHESTATEMENTISCLOSEDANDALLASSOCIATEDRESOURCESHAVEBEENFREEDTHESESTEPSANDSTATESAREILLUSTRATEDINFIGURE52FIGURE52STATEMENTPROCESSINGTHEFOLLOWINGPSEUDOCODEILLUSTRATESTHEGENERALPROCESSOFEXECUTINGAQUERYINSQLITE1OPENTHEDATABASE,CREATEACONNECTIONOBJECTDBDBOPENFOODSDB2APREPAREASTATEMENTSTMTDBPREPARESELECTFROMEPISODES2BEXECUTECALLSTEPISUNTILCURSORREACHESENDOFRESULTSETWHILESTMTSTEPSQLITE_ROWPRINTSTMTCOLUMNNAMEEND2CFINALIZERELEASEREADLOCKSTMTFINALIZE3INSERTARECORDSTMTDBPREPAREINSERTINTOFOODSVALUESSTMTSTEPSTMTFINALIZE4CLOSEDATABASECONNECTIONDBCLOSETHISPSEUDOCODEISANOBJECTORIENTEDANALOGOFTHEAPI,SIMILARTOWHATYOUMIGHTFINDINASCRIPTINGLANGUAGETHEMETHODSALLCORRESPONDTOSQLITEAPIFUNCTIONSFOREXAMPLE,PREPAREMIRRORSSQLITE3_PREPARE,ANDSOONTHISEXAMPLEPERFORMSASELECT,ITERATINGOVERALLRETURNEDROWS,FOLLOWEDBYANINSERT,WHICHISPROCESSEDBYASINGLECALLTOSTEPTEMPORARYSTORAGETEMPORARYSTORAGEISANIMPORTANTPARTOFQUERYPROCESSINGSQLITEOCCASIONALLYNEEDSTOSTOREINTERMEDIATERESULTSPRODUCEDINTHEPROCESSOFEXECUTINGCOMMANDSFORINSTANCE,WHENRESULTSNEEDTOBESORTEDFORANORDERBYCLAUSE,ORROWSINONETABLEAREJOINEDWITHROWSINANOTHERTABLETHISINFORMATIONISOFTENSTOREDINTEMPORARYSTORAGETEMPORARYSTORAGEISKEPTEITHERINRAMORINAFILEWHILESQLITEHASSUITABLEDEFAULTSFORALLPLATFORMS,YOUMAYWANTTOCONTROLHOWANDWHEREITUSESTHISSTORAGETHETEMP_STOREPRAGMALETSYOUSPECIFYWHETHERTOUSERAMORFILEBASEDSTORAGEIFYOUUSEFILEBASEDSTORAGE,YOUCANUSETHETEMP_STORE_DIRECTORYPRAGMATOSPECIFYWHERETHESTORAGEFILEISCREATEDUSINGPARAMETERIZEDSQLSQLSTATEMENTSCANCONTAINPARAMETERSPARAMETERSAREPLACEHOLDERSINWHICHVALUESMAYBEPROVIDEDOR“BOUND”ATALATERTIMEAFTERCOMPILATIONTHEFOLLOWINGSTATEMENTSAREEXAMPLESOFPARAMETERIZEDQUERIESINSERTINTOFOODSID,NAMEVALUES,INSERTINTOEPISODESID,NAMEID,NAMETHESESTATEMENTSREPRESENTTWOFORMSOFPARAMETERBINDINGPOSITIONALANDNAMEDTHEFIRSTCOMMANDUSESPOSITIONALPARAMETERSANDTHESECONDCOMMANDUSESNAMEDPARAMETERSPOSITIONALPARAMETERSAREDEFINEDBYTHEPOSITIONOFTHEQUESTIONMARKINTHESTATEMENTTHEFIRSTQUESTIONMARKHASPOSITION1,THESECOND2,ANDSOONNAMEDPARAMETERSUSEACTUALVARIABLENAMES,WHICHAREPREFIXEDWITHACOLONWHENSQLITE3_PREPARECOMPILESASTATEMENTWITHPARAMETERS,ITALLOCATESPLACEHOLDERSFORTHEPARAMETERSINTHERESULTINGSTATEMENTHANDLEITTHENEXPECTSVALUESTOBEPROVIDEDFORTHESEPARAMETERSBEFORETHESTATEMENTISEXECUTEDIFYOUDONTBINDAVALUETOAPARAMETER,SQLITEWILLUSENULLASTHEDEFAULTWHENITEXECUTESTHESTATEMENTTHEADVANTAGEOFPARAMETERBINDINGISTHATYOUCANEXECUTETHESAMESTATEMENTMULTIPLETIMESWITHOUTHAVINGTORECOMPILEITYOUJUSTRESETTHESTATEMENT,BINDANEWSETOFVALUES,ANDREEXECUTETHISISWHERERESETTINGRATHERTHANFINALIZINGASTATEMENTCOMESINHANDYITAVOIDSTHEOVERHEADOFSQLCOMPILATIONBYRESETTINGASTATEMENT,YOUAREREUSINGTHECOMPILEDSQLCODEYOUCOMPLETELYAVOIDTHETOKENIZING,PARSING,ANDCODEGENERATIONOVERHEADRESETTINGASTATEMENTISIMPLEMENTEDINTHEAPIBYTHESQLITE3_RESETFUNCTIONTHEOTHERADVANTAGEOFPARAMETERSISTHATSQLITETAKESCAREOFESCAPINGTHESTRINGVALUESYOUBINDTOPARAMETERSFOREXAMPLE,IFYOUHADAPARAMETERVALUESUCHASKENNYSCHICKEN,THEPARAMETERBINDINGPROCESSWILLAUTOMATICALLYCONVERTITTOKENNYSCHICKENESCAPINGTHESINGLEQUOTEFORYOU,HELPINGYOUAVOIDSYNTAXERRORSANDPOSSIBLESQLINJECTIONATTACKSCOVEREDINTHESECTION“FORMATTINGSQLSTATEMENTS”THEFOLLOWINGPSEUDOCODEILLUSTRATESTHEBASICPROCESSOFUSINGBOUNDPARAMETERSDBOPENFOODSDBSTMTDBPREPAREINSERTINTOEPISODESID,NAMEVALUESID,NAMESTMTBINDID,1STMTBINDNAME,SOUPNAZISTMTSTEPRESETANDUSEAGAINSTMTRESETSTMTBINDID,2STMTBINDNAME,THEJUNIORMINTDONESTMTFINALIZEDBCLOSEHERE,RESETSIMPLYDEALLOCATESTHESTATEMENTSRESOURCES,BUTLEAVESITSVDBEBYTECODEANDPARAMETERSINTACTTHESTATEMENTISREADYTORUNAGAINWITHOUTTHENEEDFORANOTHERCALLTOPREPARETHISCANSIGNIFICANTLYIMPROVEPERFORMANCEOFREPETITIVEQUERIESSUCHASTHISBECAUSETHECOMPILERCOMPLETELYDROPSOUTOFTHEEQUATIONEXECUTINGWRAPPEDQUERIESASMENTIONEDEARLIER,THEREARETWOVERYUSEFULUTILITYFUNCTIONSTHATWRAPTHEPREPAREDQUERYPROCESS,ALLOWINGYOUTOEXECUTESQLCOMMANDSINASINGLEFUNCTIONCALLONEFUNCTIONSQLITE3_EXECISTYPICALLYFORQUERIESTHATDONTRETURNDATATHEOTHERSQLITE3_GET_TABLEISTYPICALLYFORQUERIESTHATDOINMANYLANGUAGEEXTENSIONSYOUWILLSEEANALOGSTOBOTHFUNCTIONSMOSTEXTENSIONSREFERTOTHEFIRSTMETHODSIMPLYASEXEC,ANDTHESECONDASJUSTGET_TABLETHEEXECFUNCTIONISAQUICKANDEASYWAYTOEXECUTEINSERT,UPDATE,ANDDELETESTATEMENTSORDDLSTATEMENTSFORCREATINGANDDESTROYINGDATABASEOBJECTSITWORKSSTRAIGHTFROMTHEDATABASECONNECTION,TAKINGASQLITE3HANDLETOANOPENDATABASEALONGWITHASTRINGCONTAININGONEORMORESQLSTATEMENTSTHATSRIGHTEXECISCAPABLEOFPROCESSINGASTRINGOFMULTIPLESQLSTATEMENTSDELIMITEDBYSEMICOLONSANDRUNNINGTHEMALLTOGETHERINTERNALLY,EXECPARSESTHESQLSTRING,IDENTIFIESINDIVIDUALSTATEMENTS,ANDTHENPROCESSESTHEMONEBYONEITALLOCATESITSOWNSTATEMENTHANDLESANDPREPARES,EXECUTES,ANDFINALIZESEACHSTATEMENTIFMULTIPLESTATEMENTSAREPASSEDTOITANDONEOFTHEMFAILS,EXECTERMINATESEXECUTIONONTHATCOMMAND,RETURNINGTHEASSOCIATEDERRORCODEOTHERWISE,ITRETURNSASUCCESSCODETHEFOLLOWINGPSEUDOCODEILLUSTRATESCONCEPTUALLYHOWEXECWORKSINANEXTENSIONDBOPENFOODSDBDBEXEC“INSERTINTOEPISODESID,NAMEVALUES1,SOUPNAZI“DBEXEC“INSERTINTOEPISODESID,NAMEVALUES2,THEFUSILLIJERRY“DBEXEC“BEGINDELETEFROMEPISODESROLLBACK“DBCLOSEWHILEYOUCANALSOUSEEXECTOPROCESSRECORDSRETURNEDFROMSELECT,ITINVOLVESSUBTLEMETHODSFORDOINGSOTHATAREGENERALLYSUPPORTEDONLYBYTHECAPITHESECONDQUERYFUNCTION,SQLITE3_GET_TABLE,ISSOMEWHATOFAMISNOMERASITISNOTRESTRICTEDTOJUSTQUERYINGASINGLETABLERATHER,ITSNAMEREFERSTOTHETABULARRESULTSOFASELECTQUERYYOUCANCERTAINLYPROCESSJOINSWITHITJUSTASWELLINMANYRESPECTS,GET_TABLEWORKSINTHESAMEWAYASEXEC,BUTITRETURNSACOMPLETERESULTSETINMEMORYTHISRESULTSETISREPRESENTEDINVARIOUSWAYSDEPENDINGONTHEEXTENSIONTHEFOLLOWINGPSEUDOCODEILLUSTRATESHOWITISTYPICALLYUSEDDBOPENFOODSDBTABLEDBGET_TABLE“SELECTFROMEPISODESLIMIT10“FORI0ITABLEROWSIFORJ0JTABLECOLSJPRINTTABLEIJENDENDDBCLOSETHEUPSIDEOFGET_TABLEISTHATITPROVIDESAONESTEPMETHODTOQUERYANDGETRESULTSTHEDOWNSIDEISTHATITSTORESTHERESULTSCOMPLETELYINMEMORYSOTHELARGERTHERESULTSET,THEMOREMEMORYITCONSUMESNOTSURPRISINGLY,THEN,ITISNOTAGOODIDEATOUSEGET_TABLETORETRIEVELARGERESULTSETSTHEPREPAREDQUERYMETHOD,ONTHEOTHERHAND,ONLYHOLDSONERECORDACTUALLYITSASSOCIATEDDATABASEPAGEINMEMORYATATIME,SOITISMUCHBETTERSUITEDFORTRAVERSINGLARGERESULTSETSNOTICETHATWHILETHESEFUNCTIONSBUYYOUCONVENIENCE,YOUALSOLOSEABITOFCONTROLSIMPLYBYNOTHAVINGACCESSTOASTATEMENTHANDLEFOREXAMPLE,YOUCANTUSEPARAMETERIZEDSQLSTATEMENTSWITHEITHEROFTHEMSOTHEYARENOTGOINGTOBEASEFFICIENTFORREPETITIVETASKSTHATCOULDBENEFITFROMPARAMETERSALSO,THEAPIINCLUDESFUNCTIONSTHATWORKWITHSTATEMENTHANDLESTHATPROVIDELOTSOFINFORMATIONABOUTCOLUMNSINARESULTSETBOTHDATAANDMETADATATHESEARENOTAVAILABLEWITHWRAPPEDQUERIESEITHERWRAPPEDQUERIESHAVETHEIRUSES,TOBESUREBUTPREPAREDQUERIESDOASWELL中文翻译关联周期连接关系是操作数据库唯一的方法。连接关系的关联周期由三个阶段组成1连接数据库连接包括创建一个有不同种类的数据库连接对象。此数据库连接对象可控制处理器(通过它的联合呼叫),执行简单的一步询问(使用隐藏的询问功能),和为已有的询问创建陈述对象。2执行处理正如你知道的那样,所有命令都在处理器中被执行。通过默认值,数据库的关联的运做是在自动提交模块中完成的,这就意味着每一个SQL命令的执行都是基于它自身独立的处理模式的,这种有选择性的处理方式是依照“开始提交”的进程实现的,就这种特定的形式而言,就宣告了多种命令可以在同一个处理器中一起并行执行。3从数据库中分离从数据库中分离需要关闭数据库文件以及相关连的附加文件。其他行为包括询问处理其中包含对错误的操作,复杂情况的处理,以及改变操作计划,所有这一切都是通过效用函数实现的,其涵盖以下部分。连接到数据库连接到一个数据库,涉及多个开放性文件,每SQLITE数据库是存放在一个单一的操作系统文件之中,采取一库一档的方式。该功能函数用来连接,或打开数据库在CAPI是SQLITE3_OPEN()函数,基本上是一个系统调用,为实现文档开放。SQLITE也可以用来建立内存中的数据库。在大多数扩展,如果您使用内存或空字符串作为名称数据库,将创建该数据库中的RAM。该数据库将只能被创建了它的连接,进入(它不能被共享与其他连接)。此外,该数据库将只与持续申请连接时间长的进行连接,当连接关闭时,连接的信息将从内存中删除。当您连接到一个数据库磁盘时,如果该磁盘存在的话,SQLITE打开一个文件。如果你试图打开一个并不存在的文件,那么SQLITE将假设您要创建一个新的数据库。在这种情况下,SQLITE不会立即创建一个新的操作系统档案。如果你想把一些数据放入新创建的数据库中,例如创建一个表或数据或其他数据库对象,那么它只会先创建一个新的文件。如果你只打开一个新的数据库,而什么都不做,然后关闭它,SQLITE并不会理会创造一个数据库文件,它将只是一个空的文件。这还有一个不马上创建一个新的文件的理由。某些数据库选项,如编码,页面大小,以及AUTOVACUUM,这些都必须在创建一个新的数据库之前被考虑。在默认情况下,SQLITE使用一个1,024字节大小的页。然而你也可以使用设置数位从512到32768字节大小不等的页,权限2。你也许要使用不同的页尺寸是主要的制约因素。举例来说,设置页面大小,以配合操作系统的页大小可以使输入/输出更有效率。有时较大页大小的帮助在于与应用程序处理了大量的二进制数据。设置数据库页面大小使用PAGE_SIZE语。编码是另一种常用的数据库设置方式。你可以指定一个数据库的固定编码用语。可以是UTF8,UTF16,UTF16LE(小ENDIAN),和UTF16BE(大ENDIAN)。最后还有AUTOVACUUM,你可以用AUTO_VACUUM语设置。当在数据库中执行一个删除数据的处理时,SQLITE的职责是保持删除页面再造。该数据库文件仍然是与以前的保持一样的大小。当有闲置的页面,你必须明确的发出命令,收回闲散空间。该AUTOVACUUM的特点是,当数据被删除时SQLITE自动缩小数据库文件,这个功能是往往更有益在嵌入式应用中实现,是一个低风险存储。一旦你打开了一个数据库文件或记忆体,它会在内部被隐蔽的SQLITE3连接句柄。这一处理是一个单一连接到一个数据库。对象的扩展处理连接到句柄,有时的执行方法符合API函数的处理,以其为处理的一个论据。执行准备查询正如先前所说,准备查询方法是实际的过程,其中SQLITE执行所有的SQL命令。执行一个SQL命令包括三个步骤1准备阶段该解析器,TOKENIZER和代码发生器编写SQL语句所汇编成VDBE字节代码。在CAPI,这是由SQLITE3_PREPARE()功能函数,直接参与实现编译器功能的。编译器创建一个SQLITE3_STMT处理(报表处理),包含字节代码和所有其他必要的资源以执行指挥和迭代以上结果集(如果该命令产生一个)。2执行阶段VDBE执行字节码。执行是一个逐步的过程。在CAPI中,每一个步骤,是由SQLITE3_STEP()函数发起的,导致VDBE加强通过字节代码。通常第一次调用SQLITE3_STEP()函数,会得到一个某种类型的锁,其依照不同的指令在变化执行(读取或写入),对于选择性指令来说,每次通过以SQLITE3_STEP()的立场声明处理的指针指向下排的结果。每一行的设置,它将返回SQLITE_ROW,直至达到最终,这种情况下,它返回给SQLITE_DONE。其他SQL语句(插入,更新,删除,等等),第一次调用SQLITE3_STEP()的原因是VDBE处理整个命令。3最后的确定阶段VDBE关闭声明和分配资源,在CAPI中,这是由SQLITE3_FINALIZE()函数来执行的,也导致VDBE终止程序并关闭报表处理。然而,如果一项处理是由手动启动的,它就必须手动承诺或倒退,或SQLITE3_FINALIZE()将返回一个错误。当SQLITE3_FINALIZE()是成功的,所有资源的相关声明对象获得释放,在AUTOCOMMIT模式,它也发布了相关的数据库锁定。每一步从准备,执行,到最后的确定,符合各自的声明处理准备,积极的定论,到最终的定稿。准备就意味着一切必须的资源,已经被分配和声明,已经准备好随时执行,只是还没有被启动。无锁已经获得的,也将锁定直至第一次调用SQLITE3_STEP()函数,活跃的起始状态是在第一次调用SQLITE3_STEP()开始,在这一点,这份声明是在这一过程中被执行的,一些锁也在这一过程中实现。最终的决定意味着这份声明是封闭的,以及所有相关的资源已经获得释放,这些步骤符合图52。图52声明处理以下为代码说明的一般过程,执行一个查询SQLITE1打开数据库,创建一个连接目标(DB)DBOPENFOODSDB2A编写声明STMTDBPREPARESELECTFROMEPISODES2B执行调用STEP,直到光标到达最后的结果集WHILESTMTSTEPSQLITE_ROWPRINTSTMTCOLUMNNAMEEND2C最后定稿。释放读锁。STMTFINALIZE3插入一个记录STMTDBPREPAREINSERTINTOFOODSVALUESSTMTSTEPSTMTFINALIZE4关闭数据库连接DBCLOSE这个伪代码,是一种面向对象的API类,你会发现它类似于一种脚本语言,该方法对应SQLITE的API函数。举例来说,通过PREPARE()函数镜相SQLITE3_PREPARE()函数,等等,这个例子执行一个选择性语句,反复执行排列,通过插入的过程唯一调用STEP。临时存储临时存储是查询处理的一个重要组成部分,SQLITE偶尔需要在命令执行的过程中存储结果,例如,当研究结果需要加以排序,利用ORDERBY语句,或是一个表中的一排需要加入另外一个表中。这种信息的存储往往是暂时存储,暂时贮存存放在RAM或在一个文件中。当SQLITE有默认的合适的平台时,你会想要如何控制它在什么地方存储。这个TEMP_STORE语句,让你指定是否使用RAM或基于文件的存储,如果您使用基于文件的存储,你可以使用TEMP_STORE_DIRECTORY语句,来指定要存储文件所要被创建的位置。使用参数化的SQLSQL语句可以包含参数,参数是占位符中的价值在某种条件(或“约束“)下提供的,在稍后时间内,请参看以下陈述的例子。参数疑问INSERTINTOFOODSID,NAMEVALUES,INSERTINTOEPISODESID,NAMEID,NAME这些语句代表了两种形式的参数的绑定位置和命名。第一个命令用于定位参数,第二个用于命名参数。定位参数的定义是由立场的问号在声明中标注的。第一个问号标注了位置1,第二个标注了位置2,等等。命名参数用实际用实际变量名,其中前缀与冒号相连,当SQLITE3_PREPARE()编译一份声明,同参数,分配占位符为参数,由此造成的声明处理。然后预计值,以提供这些参数,在这份声明执行之前。如果你不具有绑定的有约束力的参数,SQLITE将给一个空值作为默认值,当在执行这条语句的时候。参数绑定的优势在于你可以同时执行多种声明语句,而不必重新编译它。你刚才复位声明,约束了一套新的价值,并执行。这是重新定义,而不是我们谈到的最后确定一项声明,它避免了间接的SQL汇编。由重置一份声明中,你是重用编译的SQL代码。你完全避免TOKENIZING,句法分析,代码生成。复位声明这一语句是调用函数SQLITE3_RESET(),执行应用程序接口。参数其他的优势在于,SQLITE可以充分照顾到你所绑定的逃逸字符串的值,举例来说,如果你有一个参数值,例如KENNYSCHICKEN,参数结合过程将自动转换为KENNY和SCHICKEN这两部分,逃逸的值引导,帮助避免语法错误和可能的SQL注入攻击,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年中国过氧化苯钾酰行业市场发展前景及发展趋势与投资战略研究报告
- 2025至2030全球及中国麸质饲料行业发展趋势分析与未来投资战略咨询研究报告
- 中国船员服务行业发展潜力分析及投资方向研究报告
- 写人作文唠叨的妈妈400字12篇
- 2025至2030工程管理服务行业产业运行态势及投资规划深度研究报告
- 2025至2030黄金和钻石首饰行业产业运行态势及投资规划深度研究报告
- 儿童友好视角下社区街道景观优化设计研究-以西安市全运村为例
- 非共沸混合工质环状脉动热管强化传热实验研究
- 心理咨询服务技巧题库
- 2025至2030老年旅游行业发展趋势分析与未来投资战略咨询研究报告
- 党课课件含讲稿:《关于加强党的作风建设论述摘编》辅导报告
- GB/T 19023-2025质量管理体系成文信息指南
- 多余物管理制度
- 2024北京朝阳区三年级(下)期末语文试题及答案
- 灌肠技术操作课件
- 电梯维保服务投标方案
- DL5190.5-2019电力建设施工技术规范第5部分:管道及系统
- 1才小型浇注生产线方案
- 半命题作文“-------的你--------的我”写作指导及范文
- 证券从业资格考试金融市场基础知识
- FMEA试题集(有标准规范答案)39709
评论
0/150
提交评论