




已阅读5页,还剩22页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
外文原文SQLITENAMEDPARAMETERSTHETHIRDPARAMETERBINDINGMETHODISUSINGNAMEDPARAMETERSWHEREASYOUCANASSIGNYOUROWNNUMBERSUSINGNUMBEREDPARAMETERS,YOUCANASSIGNALPHANUMERICNAMESWITHNAMEDPARAMETERSLIKEWISE,ASNUMBEREDPARAMETERSAREPREFIXEDWITHAQUESTIONMARK,YOUIDENTIFYNAMEDPARAMETERSBYPREFIXINGACOLONTOTHEPARAMETERNAMECONSIDERTHEFOLLOWINGCODESNIPPETTAKENFROMPARAMETERSCNAME“MACKINAWPEACHES“SQL“INSERTINTOEPISODESID,CID,NAMEVALUESCOSMO,COSMO,NEWMAN“RCSQLITE3_PREPAREDB,SQL,STRLENSQL,SQLITE3_BIND_INTSTMT,SQLITE3_BIND_PARAMETER_INDEXSTMT,“COSMO“,10SQLITE3_BIND_TEXTSTMT,SQLITE3_BIND_PARAMETER_INDEXSTMT,“NEWMAN“,NAME,STRLENNAME,SQLITE_TRANSIENTSQLITE3_STEPSTMTSQLITE3_FINALIZESTMTTHISEXAMPLEISIDENTICALTOTHEPREVIOUSEXAMPLEUSINGNUMBEREDPARAMETERS,EXCEPTITUSESTWONAMEDPARAMETERSCALLEDCOSMOANDNEWMANINSTEADLIKEPOSITIONALPARAMETERS,NAMEDPARAMETERSAREAUTOMATICALLYASSIGNEDNUMBERSBYSQLITE3_PREPAREWHILETHENUMBERSASSIGNEDTOEACHPARAMETERAREUNKNOWN,YOUCANRESOLVETHEMUSINGSQLITE3_BIND_PARAMETER_INDEX,WHICHTAKESAPARAMETERNAMEANDRETURNSTHECORRESPONDINGPARAMETERNUMBERTHISISTHENUMBERYOUUSETOBINDTHEVALUETOITSPARAMETERALLINALL,NAMEDPARAMETERSMAINLYHELPWITHLEGIBILITYMORETHANANYTHINGELSEPARAMETERINDEXESWHILETHEFUNCTIONSQLITE3_BIND_PARAMETER_INDEXSEEMSTOREFERTOAPARAMETERNUMBERASANINDEX,FORALLINTENTSANDPURPOSESTHETWOTERMSNUMBERANDINDEXARESYNONYMOUSIHAVESETTLEDONTHETERMNUMBERRATHERTHANINDEXFORPARAMETERPOSITIONSASARESULTOFSOMEDISCUSSIONONTHESQLITEMAILINGLIST,WHICHHASSUGGESTEDTHATNUMBERISPERHAPSABETTERDESCRIPTIONTHETERMINDEXWASUSEDWHENPARAMETERBINDINGWASLIMITEDONLYTOPOSITIONALPARAMETERSWITHTHEADDITIONOFNUMBEREDPARAMETERS,REFERRINGTOPARAMETERPOSITIONSASSEQUENTIALINDEXESCANBESOMEWHATMISLEADINGTCLPARAMETERSTHEFINALPARAMETERSCHEMEISCALLEDTCLPARAMETERSANDISSPECIFICMORETOTHETCLEXTENSIONTHANITISTOTHECAPIBASICALLY,ITWORKSIDENTICALLYTONAMEDPARAMETERSEXCEPTTHATRATHERTHANUSINGALPHANUMERICVALUESFORPARAMETERNAMES,ITUSESTCLVARIABLENAMESINTHETCLEXTENSION,WHENTHETCLEQUIVALENTOFSQLITE3_PREPAREISCALLED,THETCLEXTENSIONAUTOMATICALLYSEARCHESFORTCLVARIABLESWITHTHEGIVENPARAMETERNAMESINTHEACTIVETCLPROGRAMENVIRONMENTANDBINDSTHEMTOTHEIRRESPECTIVEPARAMETERSDESPITEITSCURRENTAPPLICATIONINTHETCLINTERFACE,NOTHINGPROHIBITSTHISSAMEMECHANISMFROMBEINGAPPLIEDTOOTHERLANGUAGEINTERFACES,WHICHCANINTURNIMPLEMENTTHESAMEFEATUREINTHISRESPECT,REFERRINGTOTHISPARAMETERMETHODSOLELYASTCLPARAMETERSMAYBEABITOFAMISNOMERTHETCLEXTENSIONJUSTHAPPENEDTOBETHEFIRSTAPPLICATIONTHATUTILIZEDTHISMETHODBASICALLY,THETCLPARAMETERSYNTAXDOESLITTLEMORETHANPROVIDEANALTERNATESYNTAXTONAMEDPARAMETERSRATHERTHANPREFIXINGTHEPARAMETERSWITHACOLON,ITUSESADOLLARSIGNERRORSANDTHEUNEXPECTEDUPTONOW,WEHAVELOOKEDATTHEAPIFROMARATHEROPTIMISTICVIEWPOINT,ASIFNOTHINGCOULDEVERGOWRONGBUTTHINGSDOGOWRONG,ANDTHEREISAPARTOFTHEAPIDEVOTEDTOTHATTHETHREETHINGSYOUALWAYSHAVETOGUARDAGAINSTINYOURCODEAREERRORS,BUSYCONDITIONS,ANDMYPERSONALFAVORITESCHEMACHANGESHANDLINGERRORSMANYOFTHEAPIFUNCTIONSRETURNINTEGERRESULTCODESTHATMEANSTHEYCANPOTENTIALLYRETURNERRORCODESOFSOMESORTTHEMOSTCOMMONFUNCTIONSTOWATCHARETYPICALLYTHEMOSTFREQUENTLYUSED,SUCHASSQLITE3_OPEN,SQLITE3_PREPAREANDFRIENDS,ASWELLASSQLITE3_EXECYOUSHOULDALWAYSPROGRAMDEFENSIVELYANDREVIEWEVERYAPIFUNCTIONDOCUMENTEDINAPPENDIXBBEFOREYOUUSEITTOENSURETHATYOUDEALWITHEVERYPOSSIBLEERRORCONDITIONTHATCANARISETHEREAREABOUT23DIFFERENTERRORSDEFINEDINTHEAPIONLYAFRACTIONOFTHEMWILLREALLYMATTERTOYOURAPPLICATIONINPRACTICEALLOFTHESQLITERETURNCODESARELISTEDINTABLE62ALLOFTHEAPIFUNCTIONSTHATCANRETURNTHEMARELISTEDASFOLLOWSSQLITE3_BIND_XXXSQLITE3_CLOSESQLITE3_CREATE_COLLATIONSQLITE3_COLLATION_NEEDEDSQLITE3_CREATE_FUNCTIONSQLITE3_PREPARESQLITE3_EXECSQLITE3_FINALIZESQLITE3_GET_TABLESQLITE3_OPENSQLITE3_RESETSQLITE3_STEPSQLITE3_TRANSFER_BINDINGSYOUCANGETEXTENDEDINFORMATIONONAGIVENERRORUSINGSQLITE3_ERRMSG,WHICHISDECLAREDASFOLLOWSCONSTCHARSQLITE3_ERRMSGSQLITE3ITTAKESACONNECTIONHANDLEASITSONLYARGUMENTANDRETURNSTHEMOSTRECENTERRORRESULTINGFROMANAPICALLONTHATCONNECTIONIFNOERRORHASBEENENCOUNTERED,ITRETURNSTHESTRING“NOTANERROR”TABLE62SQLITERETURNCODESCODEDESCRIPTIONSQLITE_OKTHEOPERATIONWASSUCCESSFULSQLITE_ERRORGENERALSQLERRORORMISSINGDATABASEITMAYBEPOSSIBLETOOBTAINMOREERRORINFORMATIONDEPENDINGONTHEERRORCONDITIONSQLITE_SCHEMA,FOREXAMPLESQLITE_PERMACCESSPERMISSIONDENIEDCANNOTREADORWRITETOTHEDATABASEFILESQLITE_ABORTACALLBACKROUTINEREQUESTEDANABORTSQLITE_BUSYTHEDATABASEFILEISLOCKEDSQLITE_LOCKEDATABLEINTHEDATABASEISLOCKEDSQLITE_NOMEMACALLTOMALLOCHASFAILEDWITHINADATABASEOPERATIONSQLITE_READONLYANATTEMPTWASMADETOWRITETOAREADONLYDATABASESQLITE_INTERRUPTOPERATIONWASTERMINATEDBYSQLITE3_INTERRUPTSQLITE_IOERRSOMEKINDOFDISKI/OERROROCCURREDSQLITE_CORRUPTTHEDATABASEDISKIMAGEISMALFORMEDTHISWILLALSOOCCURIFANATTEMPTISMADETOOPENANONSQLITEDATABASEFILEASASQLITEDATABASESQLITE_FULLINSERTIONFAILEDBECAUSETHEDATABASEISFULLTHEREISNOMORESPACEONTHEFILESYSTEMORTHEDATABASEFILECANNOTBEEXPANDEDSQLITE_CANTOPENSQLITEWASUNABLETOOPENTHEDATABASEFILESQLITE_PROTOCOLTHEDATABASEISLOCKEDORTHEREHASBEENAPROTOCOLERRORSQLITE_EMPTYINTERNALONLYTHEDATABASETABLEISEMPTYSQLITE_SCHEMATHEDATABASESCHEMAHASCHANGEDSQLITE_CONSTRAINTABORTDUETOCONSTRAINTVIOLATIONTHISCONSTANTISRETURNEDIFTHESQLSTATEMENTWOULDHAVEVIOLATEDADATABASECONSTRAINTSUCHASATTEMPTINGTOINSERTAVALUEINTOAUNIQUEINDEXTHATALREADYEXISTSINTHEINDEXSQLITE_MISMATCHDATATYPEMISMATCHANEXAMPLEOFTHISISANATTEMPTTOINSERTNONINTEGERDATAINTOACOLUMNLABELEDINTEGERPRIMARYKEYFORMOSTCOLUMNS,SQLITEIGNORESTHEDATATYPEANDALLOWSANYKINDOFDATATOBESTOREDBUTANINTEGERPRIMARYKEYCOLUMNISONLYALLOWEDTOSTOREINTEGERDATASQLITE_MISUSELIBRARYWASUSEDINCORRECTLYTHISERRORMIGHTOCCURIFONEORMOREOFTHESQLITEAPIROUTINESISUSEDINCORRECTLYEXAMPLESOFINCORRECTUSAGEINCLUDECALLINGSQLITE3_EXECAFTERTHEDATABASEHASBEENCLOSEDUSINGSQLITE3_CLOSEORCALLINGSQLITE3_EXECWITHTHESAMEDATABASEPOINTERSIMULTANEOUSLYFROMTWOSEPARATETHREADSSQLITE_NOLFSUSESOSFEATURESNOTSUPPORTEDONHOSTTHISVALUEISRETURNEDIFTHESQLITELIBRARYWASCOMPILEDWITHLARGEFILESUPPORTLFSENABLEDBUTLFSISNTSUPPORTEDONTHEHOSTOPERATINGSYSTEMSQLITE_AUTHAUTHORIZATIONDENIEDTHISOCCURSWHENACALLBACKFUNCTIONINSTALLEDUSINGSQLITE3_SET_AUTHORIZERRETURNSSQLITE_DENYSQLITE_ROWSQLITE3_STEPHASANOTHERROWREADYSQLITE_DONESQLITE3_STEPHASFINISHEDEXECUTINGWHILEITISVERYUNCOMMONOUTSIDEOFEMBEDDEDSYSTEMS,ONEOFTHEMOSTCRITICALERRORSYOUCANENCOUNTERISSQLITE_NOMEM,WHICHMEANSTHATNOMEMORYCANBEALLOCATEDONTHEHEAPEG,MALLOCFAILEDNORMALLY,AFTERASINGLEMALLOCCALLFAILS,THESQLITELIBRARYREFUSESTOFUNCTIONALLMAJORCALLSCANRETURNSQLITE_NOMEMIFTHEAPPLICATIONISABLETORECOVERFROMANOUTOFMEMORYCONDITION,ITMAYSTILLBEPOSSIBLETORESTORETHESTATEOFTHESQLITELIBRARYUSINGSQLITE3_GLOBAL_RECOVER,WHICHISDECLAREDASFOLLOWSINTSQLITE3_GLOBAL_RECOVERTHISFUNCTIONRESTORESTHELIBRARYSTATESOTHATITCANBEUSEDAGAINYOUMUSTFINALIZEORRESETALLACTIVESTATEMENTSSQLITE3_STMTPOINTERSBEFORECALLINGTHISFUNCTIONOTHERWISEITWILLRETURNSQLITE_BUSYTHISFUNCTIONWILLALSORETURNSQLITE_ERRORIFYOUAREUSINGANYINMEMORYDATABASES,EITHERASAMAINORTEMPTHETEMPDATABASEISWHERETEMPORARYDATAISSTOREDSEEATTACHDATABASEINAPPENDIXAFORDETAILSINEITHERCASE,SQLITEWILLNOTRESETTHELIBRARYANDITWILLREMAINUNUSABLECAUTIONSQLITE3_GLOBAL_RECOVERISNOTTHREADSAFECALLINGITFROMWITHINATHREADEDAPPLICATIONWHENTHREADSOTHERTHANTHECALLERHAVEUSEDSQLITEISDANGEROUSANDWILLALMOSTCERTAINLYRESULTINMALFUNCTIONSSQLITEINCLUDESMEMORYMANAGEMENTFUNCTIONSSPECIFICALLYFORTHREADSTHESEARECOVEREDLATERINTHESECTION“THREADSANDMEMORYMANAGEMENT”THESQLITE3_GLOBAL_RECOVERFUNCTIONISAIMEDATEMBEDDEDAPPLICATIONSWHEREMEMORYISSCARCERTHANNORMALAPPLICATIONSITCANBEOMITTEDFROMSQLITEATCOMPILETIMEBYDEFININGTHESQLITE_OMIT_GLOBALRECOVERPREPROCESSORDIRECTIVEHANDLINGBUSYCONDITIONSTWOIMPORTANTFUNCTIONSRELATEDTOPROCESSINGQUERIESARESQLITE3_BUSY_HANDLERANDSQLITE3_BUSY_TIMEOUTIFYOURPROGRAMUSESADATABASEONWHICHTHEREAREOTHERACTIVECONNECTIONS,ODDSAREITWILLEVENTUALLYHAVETOWAITFORALOCK,ANDTHEREFOREWILLHAVETODEALWITHSQLITE_BUSYWHENEVERYOUCALLANAPIFUNCTIONTHATCAUSESSQLITETOSEEKALOCKANDSQLITEISUNABLETOGETIT,THEFUNCTIONWILLRETURNSQLITE_BUSYTHEREARETHREEWAYSTODEALWITHTHISHANDLESQLITE_BUSYYOURSELF,EITHERBYRERUNNINGTHESTATEMENTORTAKINGSOMEOTHERACTIONHAVESQLITECALLABUSYHANDLERASKSQLITETOWAITBLOCKORSLEEPFORSOMEPERIODOFTIMEFORTHELOCKTOCLEARTHELASTOPTIONINVOLVESUSINGSQLITE3_BUSY_TIMEOUTTHISFUNCTIONTELLSSQLITEHOWLONGTOWAITFORALOCKTOCLEARBEFORERETURNINGSQLITE_BUSYWHILEITCANULTIMATELYRESULTINYOUSTILLHAVINGTOHANDLESQLITE_BUSY,INPRACTICESETTINGTHISVALUETOASUFFICIENTPERIODOFTIMESAY30SECONDSUSUALLYPROVIDESENOUGHTIMEFOREVENTHEMOSTINTENSIVETRANSACTIONTOCOMPLETENEVERTHELESS,YOUSHOULDSTILLHAVESOMECONTINGENCYPLANINPLACETOHANDLESQLITE_BUSYUSERDEFINEDBUSYHANDLERSTHESECONDOPTIONENTAILSUSINGSQLITE3_BUSY_HANDLERTHISFUNCTIONPROVIDESAWAYTOCALLAUSERDEFINEDFUNCTIONRATHERTHANBLOCKINGORRETURNINGSQLITE_BUSYRIGHTAWAYITSDECLAREDASFOLLOWSINTSQLITE3_BUSY_HANDLERSQLITE3,INTVOID,INT,VOIDTHESECONDARGUMENTISAPOINTERTOAFUNCTIONTOBECALLEDASTHEBUSYHANDLER,ANDTHETHIRDARGUMENTISAPOINTERTOAPPLICATIONSPECIFICDATATOBEPASSEDASTHEFIRSTARGUMENTTOTHEHANDLERTHESECONDARGUMENTTOTHEBUSYHANDLERISTHENUMBEROFPRIORCALLSMADETOTHEHANDLERFORTHESAMELOCKSUCHAHANDLERMIGHTCALLSLEEPFORAPERIODTOWAITOUTTHELOCK,ORITMAYSENDSOMEKINDOFNOTIFICATIONITMAYDOWHATEVERYOULIKE,ASITISYOURSTOIMPLEMENTBEWARNED,THOUGH,THATREGISTERINGABUSYHANDLERDOESNOTGUARANTEETHATITWILLALWAYSBECALLEDASMENTIONEDINCHAPTER5,SQLITEWILLFOREGOCALLINGABUSYHANDLERFORACONNECTIONIFITPERCEIVESADEADLOCKMIGHTRESULTSPECIFICALLY,IFYOURCONNECTIONINSHAREDISINTERFERINGWITHANOTHERCONNECTIONINRESERVED,SQLITEWILLNOTINVOKEYOURBUSYHANDLER,HOPINGYOUWILLTAKETHEHINTINTHISCASE,YOUARETRYINGTOWRITETOTHEDATABASEFROMSHAREDSTARTINGTHETRANSACTIONWITHBEGINWHENYOUREALLYSHOULDBESTARTINGFROMRESERVEDSTARTINGTHETRANSACTIONWITHBEGINIMMEDIATETHEONLYRESTRICTIONONBUSYHANDLERSISTHATTHEYMAYNOTCLOSETHEDATABASECLOSINGTHEDATABASEFROMWITHINABUSYHANDLERCANDELETECRITICALDATASTRUCTURESOUTFROMUNDERTHEEXECUTINGQUERYANDRESULTINCRASHINGYOURPROGRAMADVICEALLTHINGSCONSIDERED,THEBESTROUTEMAYBETOSETTHETIMEOUTTOAREASONABLEVALUEANDTHENTAKESOMEPRECAUTIONIFANDWHENYOURECEIVEASQLITE_BUSYVALUEINGENERAL,IFYOUAREGOINGTOWRITETOTHEDATABASE,STARTINRESERVEDIFYOUDONTDOTHIS,THENTHENEXTBESTTHINGISTOINSTALLABUSYHANDLER,SETTHETIMEOUTTOAKNOWNVALUE,ANDIFSQLITERETURNSSQLITE_BUSY,CHECKTHERESPONSETIMEIFTHETIMEISLESSTHANTHEBUSYHANDLERSDELAY,THENSQLITEISTELLINGYOUTHATYOURQUERYANDCONNECTIONISPREVENTINGAWRITERFROMPROCEEDINGIFYOUWANTTOWRITETOTHEDATABASEATTHISPOINT,YOUSHOULDFINALIZEORRESET,THENREEXECUTETHESTATEMENT,THISTIMESTARTINGWITHBEGINIMMEDIATEHANDLINGSCHEMACHANGESWHENEVERACONNECTIONCHANGESTHEDATABASESCHEMA,ALLOTHERPREPAREDSTATEMENTSTHATWERECOMPILEDBEFORETHECHANGEAREINVALIDATEDTHERESULTISTHATTHEFIRSTCALLTOSQLITE3_STEPFORSUCHSTATEMENTSRETURNSSQLITE_ERRORFROMALOCKINGSTANDPOINT,THESCHEMACHANGEOCCURSBETWEENTHETIMEAREADERCALLSSQLITE3_PREPARETOCOMPILEASTATEMENTANDCALLINGSQLITE3_STEPTOEXECUTEITWHENTHISHAPPENS,THEONLYCOURSEOFACTIONFORYOUISTOFINALIZEORRESETTHEQUERYANDSTARTOVERHOWEVER,YOUMUSTCONFIRMTHATTHEERRORISINFACTDUETOASCHEMACHANGETODOSO,WHENEVERSQLITE3_STEPRETURNSSQLITE_ERROR,YOUSHOULDCALLSQLITE3_RESETTOSEEIFITRETURNSSQLITE_SCHEMAANOTHERWAYTOCHECKFORTHISCONDITIONISTOCALLSQLITE3_EXPIRED,WHICHTAKESTHESTATEMENTHANDLEASITSONLYARGUMENTNOTEITSIMPORTANTTHATYOUUNDERSTANDTHATWHENASCHEMACHANGEOCCURS,SQLITE3_STEPNEVERRETURNSSQLITE_SCHEMADIRECTLYITALWAYSRETURNSSQLITE_ERRORYOUTHENHAVETOCALLSQLITE3_FINALIZE,SQLITE3_RESET,ORSQLITE3_EXPIREDTODETERMINEIFTHEERRORWASDUETOSQLITE_SCHEMAYOUSHOULDALWAYSCHECKFORTHISCONDITIONWHENEVERYOUUSESQLITE3_STEPSEVERALEVENTSCANCAUSESQLITE_SCHEMAERRORSDETACHINGDATABASESMODIFYINGORINSTALLINGUSERDEFINEDFUNCTIONSORAGGREGATESMODIFYINGORINSTALLINGUSERDEFINEDCOLLATIONSMODIFYINGORINSTALLINGAUTHORIZATIONFUNCTIONSVACUUMINGTHEDATABASETHEREASONTHESQLITE_SCHEMACONDITIONEXISTSULTIMATELYRELATESTOTHEVDBEWHENACONNECTIONCHANGESTHESCHEMA,OTHERCOMPILEDQUERIESMAYHAVEVDBECODETHATPOINTSTODATABASEOBJECTSTHATNOLONGEREXIST,ORAREINADIFFERENTLOCATIONINTHEDATABASERATHERTHANRUNNINGTHERISKOFABIZARRERUNTIMEERRORLATER,SQLITEINVALIDATESALLSTATEMENTSTHATHAVEBEENCOMPILEDBUTNOTEXECUTEDTHEYMUSTBERECOMPILEDSQLITE_SCHEMACANONLYOCCURONTHEFIRSTCALLTOSQLITE3_STEPTHISISBECAUSESQLITE3_STEP,WHENSUCCESSFUL,ALWAYSGETSALOCKONTHEDATABASEONCEYOUHAVEALOCKONTHEDATABASE,ITISIMPOSSIBLEFORANYOTHERCONNECTIONTOWRITETOORALTERTHEDATABASESOIFTHEFIRSTCALLISSUCCESSFUL,YOUAREGUARANTEEDTHATALLSUBSEQUENTCALLSTOSQLITE3_STEPWILLNOTENCOUNTERSQLITE_SCHEMAONEPOSSIBLEWAYPROVIDEDBYTHESQLITEFAQTOHANDLESQLITE_SCHEMAISSHOWNINLISTING68LISTING68HANDLINGSQLITE_SCHEMAINTRCSQLITE3_STMTPSTMTCHARZSQL“SELECT“DO/COMPILETHESTATEMENTFROMSQLASSUMESUCCESS/SQLITE3_PREPAREPDB,ZSQL,1,WHILESQLITE_ROWSQLITE3_STEPPSTMT/DOSOMETHINGWITHTHEROWOFAVAILABLEDATA/FINALIZETHESTATEMENTIFASQLITE_SCHEMAERRORHASOCCURRED,THENTHEABOVECALLTOSQLITE3_STEPWILLHAVERETURNEDSQLITE_ERRORSQLITE3_FINALIZEWILLRETURNSQLITE_SCHEMAINTHISCASETHELOOPWILLEXECUTEAGAIN/RCSQLITE3_FINALIZEPSTMTWHILERCSQLITE_SCHEMAAPOSSIBLEVARIATIONISTOTAKEINTOCONSIDERATIONBOUNDPARAMETERSTHESEPARAMETERSCANBEAUTOMATICALLYTRANSFERREDTOTHENEWCOMPILEDQUERYUSINGSQLITE3_TRANSFER_BINDINGS,ASSHOWNINLISTING69LISTING69HANDLINGSQLITE_SCHEMAWITHSQLITE3_TRANSFER_BINDINGSINTRC,PROCESSED,SKIPSQLITE3_STMTPSTMTNULLSQLITE3_STMTPLASTSTMTNULLCHARZSQL“SELECT“DOSQLITE3_PREPAREPDB,ZSQL,1,/IFTHEREWASALASTSTMT,TRANSFERBINDINGSFROMIT/IFPLASTSTMTNULLSQLITE3_TRANSFER_BINDINGSPLASTSTMT,PSTMT/KEEPTRACKOFTHECURRENTSTMT/PLASTSTMTPSTMTWHILESQLITE_ROWSQLITE3_STEPPSTMT/DOSOMETHINGWITHTHEROWOFAVAILABLEDATA/PROCESSEDRCSQLITE3_FINALIZEPSTMTWHILERCSQLITE_SCHEMAANOTHEROPTIONFORCHECKINGFORSQLITE_SCHEMAWITHOUTFINALIZINGDESTROYINGTHEQUERYISTOCALLSQLITE3_RESETINSTEADOFSQLITE3_FINALIZETHISWILLPROVIDEYOUWITHTHESQLITE_SCHEMAERRORIFITEXISTSHOWEVER,IFTHEERRORISNOTSCHEMARELATED,YOUAVOIDTHECOSTOFHAVINGTORECOMPILETHEQUERYSINCESQLITE3_RESETLEAVESTHEQUERYINASTATEWHEREITCANSTILLBEEXECUTEDTRACINGSQLIFYOUAREHAVINGAHARDTIMEFIGURINGOUTEXACTLYWHATYOURPROGRAMISDOINGWITHTHEDATABASE,YOUCANTRACKWHATSQLSTATEMENTSITHASEXECUTEDUSINGSQLITE3_TRACEITSDECLARATIONISASFOLLOWSVOIDSQLITE3_TRACESQLITE3,VOIDXTRACEVOID,CONSTCHAR,VOIDTHISFUNCTIONISANALOGOUSTOPUTTINGAWIRETAPONACONNECTIONYOUCANUSEITTOGENERATEALOGFILEOFALLSQLEXECUTEDONAGIVENCONNECTIONASWELLPROVIDEHELPFULDEBUGGINGINFORMATIONEVERYSQLSTATEMENTTHATISPROCESSEDISPASSEDTOTHECALLBACKFUNCTIONSPECIFIEDINTHESECONDARGUMENTSQLITEPASSESTHEDATAPROVIDEDINTHETHIRDARGUMENTOFSQLITE3_TRACETOTHEFIRSTARGUMENTOFTHECALLBACKFUNCTIONOPERATIONALCONTROLTHEAPIPROVIDESSEVERALFUNCTIONSYOUCANUSETOMONITORAND/ORMANAGESQLCOMMANDSATCOMPILETIMEANDRUNTIMETHESEFUNCTIONSALLOWYOUTOINSTALLCALLBACKFUNCTIONSWITHWHICHTOMONITORANDCONTROLVARIOUSDATABASEEVENTSASTHEYHAPPENCOMMITHOOKSTHESQLITE3_COMMIT_HOOKFUNCTIONALLOWSYOUTOMONITORWHENTRANSACTIONSCOMMITONAGIVENCONNECTIONITISDECLAREDASFOLLOWSVOIDSQLITE3_COMMIT_HOOKSQLITE3CNX,/DATABASEHANDLE/INTXCALLBACKVOIDDATA,/CALLBACKFUNCTION/VOIDDATA/APPLICATIONDATA/THISFUNCTIONREGISTERSTHECALLBACKFUNCTIONXCALLBACK,WHICHWILLBEINVOKEDWHENEVERATRANSACTIONCOMMITSONTHECONNECTIONGIVENBYCNXTHETHIRDARGUMENTDATAISAPOINTERTOAPPLICATIONSPECIFICDATA,WHICHSQLITEPASSESTOTHECALLBACKFUNCTIONIFTHECALLBACKFUNCTIONRETURNSANONZEROVALUE,THENTHECOMMITISCONVERTEDINTOAROLLBACKPASSINGANULLVALUEINFORTHECALLBACKFUNCTIONEFFECTIVELYDISABLESTHECURRENTLYREGISTEREDCALLBACKIFANYALSO,ONLYONECALLBACKCANBEREGISTEREDATATIMEFORAGIVENCONNECTIONTHERETURNVALUEFORSQLITE3_COMMIT_HOOKISNULLUNLESSANOTHERCALLBACKFUNCTIONWASPREVIOUSLYREGISTERED,INWHICHCASETHEPREVIOUSDATAVALUEISRETURNEDNOTETHESQLITE3_COMMIT_HOOKFUNCTIONISCURRENTLYMARKEDASEXPERIMENTALANDISTHEREFORESUBJECTTOCHANGEHOWEVER,ACCORDINGSQLITESAUTHOR,THISISEXTREMELYUNLIKELYASTHISFUNCTIONHASBEENINTHEAPIFORSOMETIMENOWROLLBACKHOOKSROLLBACKHOOKSARESIMILARTOCOMMITHOOKSEXCEPTTHATTHEYWATCHFORROLLBACKSFORAGIVENCONNECTIONROLLBACKHOOKSAREREGISTEREDWITHTHEFOLLOWINGFUNCTIONVOIDSQLITE3_ROLLBACK_HOOKSQLITE3CNX,VOIDXCALLBACKVOIDDATA,VOIDDATATHISFUNCTIONREGISTERSTHECALLBACKFUNCTIONXCALLBACK,WHICHWILLBEINVOKEDINTHEEVENTOFAROLLBACKONCNX,WHETHERBYANEXPLICITROLLBACKCOMMANDORANIMPLICITERRORORCONSTRAINTVIOLATIONTHECALLBACKISNOTINVOKEDIFATRANSACTIONISAUTOMATICALLYROLLEDBACKDUETOTHEDATABASECONNECTIONBEINGCLOSEDTHETHIRDARGUMENTDATAISAPOINTERTOAPPLICATIONSPECIFICDATA,WHICHSQLITEPASSESTOTHECALLBACKFUNCTIONASINSQLITE3_COMMIT_HOOK,EACHTIMEYOUCALLSQLITE3_ROLLBACK_HOOK,THENEWCALLBACKFUNCTIONYOUPROVIDEWILLREPLACEANYCURRENTLYREGISTEREDCALLBACKFUNCTIONIFACALLBACKFUNCTIONWASPREVIOUSLYREGISTERED,SQLITE3_ROLLBACK_HOOKRETURNSTHEPREVIOUSDATAARGUMENT中文翻译SQLITE数据库1命名参数第三个参数约束方法是使用命名参数。然而你可以用你的号码作为编号的参数,你能够用命名参数代替字母数字名称。同样,作为编号的参数前缀一个问号(),你确定以参数名用前缀一个冒号()来命名参数。考虑如下代码片断(摘自PARAMETERSC)NAME“MACKINAWPEACHES“SQL“INSERTINTOEPISODESID,CID,NAMEVALUESCOSMO,COSMO,NEWMAN“RCSQLITE3_PREPAREDB,SQL,STRLENSQL,SQLITE3_BIND_INTSTMT,SQLITE3_BIND_PARAMETER_INDEXSTMT,“COSMO“,10SQLITE3_BIND_TEXTSTMT,SQLITE3_BIND_PARAMETER_INDEXSTMT,“NEWMAN“,NAME,STRLENNAME,SQLITE_TRANSIENTSQLITE3_STEPSTMTSQLITE3_FINALIZESTMT除了使用两个命名参数所谓COSMO和NEWMAN代替,这个例子使用编号为参数与前面的例子完全相同像定位参数,命名参数均由SQLITE3_PREPARE()自动分配号码。而号码分配给每个参数都是未知,你用SQLITE3_BIND_PARAMETER_INDEX()也解决不了它们,其中一个参数的名称并返回相应的参数号码。用这个数约束它的值及其参数。总而言之,命名参数,主要是帮助易读性比任何事情都重要。11参数指标而功能SQLITE3_BIND_PARAMETER_INDEX(),似乎是指一个参数数目作为指数,对所有意图和目的两个条款(编号和索引)是同义的。我已解决了对任期内有多少,而不是指数为参数的立场,由于一些论SQLITE消息名单中,曾建议若干或许是一个更好的描述。任期指数时所用的参数约束力是有限的,只定位参数。由于增加了编号为参数,是指参数的位置(顺序)指标,可以有误导成分。12TCL参数最后参数计划名为TCL的参数和方法是具体多向延伸的TCL比是给C的指数。基本上,它的工程,以相同的命名参数除外,而不是比用字母数字值为参数的名字,它使用的TCL变数名称。在TCL扩建中,当SQLITE3_PREPARE的TCL同等学历被命名,方法自动延长搜寻的TCL变量与特定的参数的名字在活跃的TCL计划环境约束,他们以各自的参数。尽管其目前的应用方法接口,没有禁止这种同样的机制被应用于其他语言接口,这反过来可以实施相同的功能。在这方面,是指这参数法仅仅作为TCL参数可能是一个有点名不副实。方法刚刚扩建正好是第一个应用程序,利用此方法。基本上,函数参数语法多提供一个备用的语法来命名参数,而不是PREFIXING参数,以冒号(),它是用美元符号()。13错误和意外现在到为止,我们看到空气污染指数从较为乐观的角度来看,好像没有什么能够去错了。但事情发生错误,并有一部分TEMP指数,专门讨论了这一点。三件事情,你总是要防范在你的代码是错误的,忙条件,并以我个人最爱模式转变。14异常处理很多的API函数返回整数的结果代码。这意味着他们有可能返回错误代码的某种形式。最常见的功能,以观赏通常是最常使用,像这样SQLITE3_OPEN(),SQLITE3_PREPARE()ANDFRIENDS,ASWELLASSQLITE3_EXEC()你要始终保护程序,并检查每一个API函数(记录在附录B)之前,你用它来确保您对付所有可能的误差,条件是有可能发生的。现时大约有23个不同的错误界定,在可用函数中。只有一小部分,他们真的会事您在实践中的应用。所有的SQLITE返回码列在表62。所有的API函数可以返回他们列举如下SQLITE3_BIND_XXX()SQLITE3_CLOSE()SQLITE3_CREATE_COLLATION()SQLITE3_COLLATION_NEEDED()SQLITE3_CREATE_FUNCTION()SQLITE3_PREPARE()SQLITE3_EXEC()SQLITE3_FINALIZE()SQLITE3_GET_TABLE()SQLITE3_OPEN()SQ
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 食品加工与食品安全知识点梳理
- 2025年现代物流与仓储管理知识考核试卷及答案
- 2025年城市交通管理基础知识考试试题及答案
- 2025年工程造价管理相关测试卷及答案
- 2025年湖北卷高考政治真题
- 2025年甘肃省武威市凉州区金塔镇招聘专业化管理的大学生村文书笔试备考题库参考答案详解
- 2025年甘肃省民航机场集团校园招聘45人笔试参考题库及参考答案详解1套
- 物资领用盘点管理制度
- 特殊工种认证管理制度
- 特殊病人用药管理制度
- HG20202-2014 脱脂工程施工及验收规范
- 2025年高考地理复习:人教版必修第一册高频考点知识点提纲
- DL∕T 1573-2016 电力电缆分布式光纤测温系统技术规范
- DL-T-5438-2019输变电工程经济评价导则
- 宏观经济学全套课件(完整)
- JBT 14609-2023 农林拖拉机和机械 交流发电机 (正式版)
- 计算机基础知识题库1000道含完整答案(历年真题)
- 府谷县国能煤矿矿山地质环境保护与土地复垦方案
- 社会稳定风险评估 投标方案(技术标)
- 常见土源性寄生虫
- 销冠表彰活动方案
评论
0/150
提交评论