/* Ċ Ġ* ĠCopyright Ġ( C ) Ġ 2 0 0 6 ĠThe ĠAndroid ĠOpen ĠSource ĠProject Ċ Ġ* Ċ Ġ* ĠCHANGE ĠNOTICE : ĠFile Ġmodified Ġby ĠTouch lab ĠInc Ġto Ġport Ġto ĠKotlin Ġand Ġgenerally Ġprepare Ġfor ĠKotlin / Native Ċ Ġ* Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ Ċ package Ġco . touch lab . kn arch . db Ċ Ċ import Ġco . touch lab . kn arch .* Ċ import Ġco . touch lab . kn arch . db . sqlite .* Ċ import Ġkotlin . math . max Ċ Ċ class ĠDatabase Utils Ġ{ ĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĊĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠTAG Ġ= Ġ" Database Utils " ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠDEBUG Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġ/** ĠOne Ġof Ġthe Ġvalues Ġreturned Ġby Ġ{@ link Ġ# get Sql Statement Type ( String )}. Ġ*/ ĊĠĠĠĠĠĠĠ Ġval ĠSTATE MENT _ SELECT Ġ= Ġ 1 ĊĠĠĠĠĠĠĠ Ġ/** ĠOne Ġof Ġthe Ġvalues Ġreturned Ġby Ġ{@ link Ġ# get Sql Statement Type ( String )}. Ġ*/ ĊĠĠĠĠĠĠĠ Ġval ĠSTATE MENT _ UPDATE Ġ= Ġ 2 ĊĠĠĠĠĠĠĠ Ġ/** ĠOne Ġof Ġthe Ġvalues Ġreturned Ġby Ġ{@ link Ġ# get Sql Statement Type ( String )}. Ġ*/ ĊĠĠĠĠĠĠĠ Ġval ĠSTATE MENT _ ATTACH Ġ= Ġ 3 ĊĠĠĠĠĠĠĠ Ġ/** ĠOne Ġof Ġthe Ġvalues Ġreturned Ġby Ġ{@ link Ġ# get Sql Statement Type ( String )}. Ġ*/ ĊĠĠĠĠĠĠĠ Ġval ĠSTATE MENT _ BEGIN Ġ= Ġ 4 ĊĠĠĠĠĠĠĠ Ġ/** ĠOne Ġof Ġthe Ġvalues Ġreturned Ġby Ġ{@ link Ġ# get Sql Statement Type ( String )}. Ġ*/ ĊĠĠĠĠĠĠĠ Ġval ĠSTATE MENT _ COMMIT Ġ= Ġ 5 ĊĠĠĠĠĠĠĠ Ġ/** ĠOne Ġof Ġthe Ġvalues Ġreturned Ġby Ġ{@ link Ġ# get Sql Statement Type ( String )}. Ġ*/ ĊĠĠĠĠĠĠĠ Ġval ĠSTATE MENT _ ABORT Ġ= Ġ 6 ĊĠĠĠĠĠĠĠ Ġ/** ĠOne Ġof Ġthe Ġvalues Ġreturned Ġby Ġ{@ link Ġ# get Sql Statement Type ( String )}. Ġ*/ ĊĠĠĠĠĠĠĠ Ġval ĠSTATE MENT _ PR AG MA Ġ= Ġ 7 ĊĠĠĠĠĠĠĠ Ġ/** ĠOne Ġof Ġthe Ġvalues Ġreturned Ġby Ġ{@ link Ġ# get Sql Statement Type ( String )}. Ġ*/ ĊĠĠĠĠĠĠĠ Ġval ĠSTATE MENT _ DDL Ġ= Ġ 8 ĊĠĠĠĠĠĠĠ Ġ/** ĠOne Ġof Ġthe Ġvalues Ġreturned Ġby Ġ{@ link Ġ# get Sql Statement Type ( String )}. Ġ*/ ĊĠĠĠĠĠĠĠ Ġval ĠSTATE MENT _ UN PRE PARE D Ġ= Ġ 9 ĊĠĠĠĠĠĠĠ Ġ/** ĠOne Ġof Ġthe Ġvalues Ġreturned Ġby Ġ{@ link Ġ# get Sql Statement Type ( String )}. Ġ*/ ĊĠĠĠĠĠĠĠ Ġval ĠSTATE MENT _ OTHER Ġ= Ġ 9 9 ĊĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠBind s Ġthe Ġgiven ĠObject Ġto Ġthe Ġgiven ĠSQLite Program Ġusing Ġthe Ġproper ĊĠĠĠĠĠĠĠĠ Ġ* Ġtyping . ĠFor Ġexample , Ġbind Ġnumbers Ġas Ġlong s / double s , Ġand Ġeverything Ġelse ĊĠĠĠĠĠĠĠĠ Ġ* Ġas Ġa Ġstring Ġby Ġcall ĠtoString () Ġon Ġit . ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġprog Ġthe Ġprogram Ġto Ġbind Ġthe Ġobject Ġto ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġindex Ġthe Ġ 1 - based Ġindex Ġto Ġbind Ġat ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġvalue Ġthe Ġvalue Ġto Ġbind ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġbind Object To Program ( prog : ĠSQLite Program , Ġindex : ĠInt , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalue : ĠAny ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( value Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprog . bind Null ( index ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( value Ġis ĠDouble Ġ|| Ġvalue Ġis ĠFloat ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprog . bind Double ( index , Ġ( value Ġas ĠNumber ). toDouble ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( value Ġis ĠNumber ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprog . bind Long ( index , Ġ( value Ġas ĠNumber ). to Long ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( value Ġis ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbool Ġ= Ġvalue Ġas ĠBoolean ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( bool ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprog . bind Long ( index , Ġ 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprog . bind Long ( index , Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( value Ġis ĠByteArray ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprog . bind Blob ( index , Ġvalue Ġas ĠByteArray ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprog . bind String ( index , Ġvalue . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠReturns Ġdata Ġtype Ġof Ġthe Ġgiven Ġobject 's Ġvalue . ĊĠĠĠĠĠĠĠĠ Ġ* < p > ĊĠĠĠĠĠĠĠĠ Ġ* ĠReturned Ġvalues Ġare ĊĠĠĠĠĠĠĠĠ Ġ* Ġ< ul > ĊĠĠĠĠĠĠĠĠ Ġ* Ġ< li >{@ link ĠCursor # FIELD _ TYPE _ NULL }</ li > ĊĠĠĠĠĠĠĠĠ Ġ* Ġ< li >{@ link ĠCursor # FIELD _ TYPE _ INTEGER }</ li > ĊĠĠĠĠĠĠĠĠ Ġ* Ġ< li >{@ link ĠCursor # FIELD _ TYPE _ FLOAT }</ li > ĊĠĠĠĠĠĠĠĠ Ġ* Ġ< li >{@ link ĠCursor # FIELD _ TYPE _ STRING }</ li > ĊĠĠĠĠĠĠĠĠ Ġ* Ġ< li >{@ link ĠCursor # FIELD _ TYPE _ BLOB }</ li > ĊĠĠĠĠĠĠĠĠ Ġ*</ ul > ĊĠĠĠĠĠĠĠĠ Ġ*</ p > ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġobj Ġthe Ġobject Ġwhose Ġvalue Ġtype Ġis Ġto Ġbe Ġreturned ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ return Ġobject Ġvalue Ġtype ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ hide ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġget TypeOf Object ( obj : ĠAny ?): ĠInt Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( obj Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠCursor . FIELD _ TYPE _ NULL ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( obj Ġis ĠByteArray ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠCursor . FIELD _ TYPE _ BLOB ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( obj Ġis ĠFloat Ġ|| Ġobj Ġis ĠDouble ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠCursor . FIELD _ TYPE _ FLOAT ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ(( obj Ġis ĠLong Ġ|| Ġobj Ġis ĠInt ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ|| Ġobj Ġis ĠShort Ġ|| Ġobj Ġis ĠByte )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠCursor . FIELD _ TYPE _ INTEGER ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠCursor . FIELD _ TYPE _ STRING ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠF ills Ġthe Ġspecified Ġcursor Ġwindow Ġby Ġiter ating Ġover Ġthe Ġcontents Ġof Ġthe Ġcursor . ĊĠĠĠĠĠĠĠĠ Ġ* ĠThe Ġwindow Ġis Ġfilled Ġuntil Ġthe Ġcursor Ġis Ġex hausted Ġor Ġthe Ġwindow Ġruns Ġout ĊĠĠĠĠĠĠĠĠ Ġ* Ġof Ġspace . ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* ĠThe Ġoriginal Ġposition Ġof Ġthe Ġcursor Ġis Ġleft Ġunchanged Ġby Ġthis Ġoperation . ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġcursor ĠThe Ġcursor Ġthat Ġcontains Ġthe Ġdata Ġto Ġput Ġin Ġthe Ġwindow . ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġposition ĠThe Ġstart Ġposition Ġfor Ġfilling Ġthe Ġwindow . ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġwindow ĠThe Ġwindow Ġto Ġfill . ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ hide ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġcursor Fill Window ( cursor : ĠCursor , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠstartPosition : ĠInt , Ġwindow : ĠCursor Window ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġposition Ġ= ĠstartPosition ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( position Ġ< Ġ 0 Ġ|| Ġposition Ġ>= Ġcursor . getCount ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġold Pos Ġ= Ġcursor . getPosition () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnum Columns Ġ= Ġcursor . getColumn Count () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwindow . clear () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwindow . start Position Ġ= Ġposition ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwindow . set Num Columns ( num Columns ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( cursor . moveTo Position ( position )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdo Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! window . alloc Row ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbreak ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġnum Columns ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtype Ġ= Ġcursor . getType ( i ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsuccess : ĠBoolean ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( type ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCursor . FIELD _ TYPE _ NULL Ġ-> Ġsuccess Ġ= Ġwindow . put Null ( position , Ġi ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCursor . FIELD _ TYPE _ INTEGER Ġ-> Ġsuccess Ġ= Ġwindow . put Long ( cursor . getLong ( i ), Ġposition , Ġi ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCursor . FIELD _ TYPE _ FLOAT Ġ-> Ġsuccess Ġ= Ġwindow . put Double ( cursor . getDouble ( i ), Ġposition , Ġi ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCursor . FIELD _ TYPE _ BLOB Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvalue Ġ= Ġcursor . get Blob ( i ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsuccess Ġ= Ġif Ġ( value Ġ!= Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwindow . put Blob ( value , Ġposition , Ġi ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwindow . put Null ( position , Ġi ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCursor . FIELD _ TYPE _ STRING Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvalue Ġ= Ġcursor . getString ( i ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsuccess Ġ= Ġif Ġ( value Ġ!= Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwindow . putString ( value , Ġposition , Ġi ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwindow . put Null ( position , Ġi ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ// Ġassume Ġvalue Ġis Ġconvert ible Ġto ĠString ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvalue Ġ= Ġcursor . getString ( i ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsuccess Ġ= Ġif Ġ( value Ġ!= Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwindow . putString ( value , Ġposition , Ġi ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwindow . put Null ( position , Ġi ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! success ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwindow . free Last Row () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbreak ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġposition Ġ+= Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġwhile Ġ( cursor . moveTo Next ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcursor . moveTo Position ( old Pos ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠApp ends Ġan ĠSQL Ġstring Ġto Ġthe Ġgiven ĠStringBuilder , Ġincluding Ġthe Ġopening ĊĠĠĠĠĠĠĠĠ Ġ* Ġand Ġclosing Ġsingle Ġquotes . ĠAny Ġsingle Ġquotes Ġinternal Ġto Ġsql String Ġwill ĊĠĠĠĠĠĠĠĠ Ġ* Ġbe Ġescaped . ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* ĠThis Ġmethod Ġis Ġdeprecated Ġbecause Ġwe Ġwant Ġto Ġencourage Ġeveryone ĊĠĠĠĠĠĠĠĠ Ġ* Ġto Ġuse Ġthe Ġ" ?" Ġbinding Ġform . ĠHowever , Ġwhen Ġimplementing Ġa ĊĠĠĠĠĠĠĠĠ Ġ* ĠContent Provider , Ġone Ġmay Ġwant Ġto Ġadd ĠWHERE Ġclauses Ġthat Ġwere ĊĠĠĠĠĠĠĠĠ Ġ* Ġnot Ġprovided Ġby Ġthe Ġcaller . ĠSince Ġ" ?" Ġis Ġa Ġpositional Ġform , ĊĠĠĠĠĠĠĠĠ Ġ* Ġusing Ġit Ġin Ġthis Ġcase Ġcould Ġbreak Ġthe Ġcaller Ġbecause Ġthe ĊĠĠĠĠĠĠĠĠ Ġ* Ġindexes Ġwould Ġbe Ġshifted Ġto Ġac com od ate Ġthe ĠContent Provider 's ĊĠĠĠĠĠĠĠĠ Ġ* Ġinternal Ġbindings . ĠIn Ġthat Ġcase , Ġit Ġmay Ġbe Ġnecessary Ġto ĊĠĠĠĠĠĠĠĠ Ġ* Ġconstruct Ġa ĠWHERE Ġclause Ġmanually . ĠThis Ġmethod Ġis Ġuseful Ġfor ĊĠĠĠĠĠĠĠĠ Ġ* Ġthose Ġcases . ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġsb Ġthe ĠStringBuilder Ġthat Ġthe ĠSQL Ġstring Ġwill Ġbe Ġappended Ġto ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġsql String Ġthe Ġraw Ġstring Ġto Ġbe Ġappended , Ġwhich Ġmay Ġcontain Ġsingle ĊĠĠĠĠĠĠĠĠ Ġ* Ġquotes ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġappend Esc aped SQL String ( sb : ĠStringBuilder , Ġsql String : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsb . append (' \' ') ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( sql String . indexOf (' \' ') Ġ!= Ġ- 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlength Ġ= Ġsql String . length ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġlength ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġc Ġ= Ġsql String . get ( i ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( c Ġ== Ġ'\' ') Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsb . append (' \' ') ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsb . append ( c ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsb . append ( sql String ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsb . append (' \' ') ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠSQL - escape Ġa Ġstring . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġsql Escape String ( value : ĠString ): ĠString Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġescap er Ġ= ĠStringBuilder () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDatabase Utils . append Esc aped SQL String ( es cap er , Ġvalue ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġescap er . toString () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠApp ends Ġan ĠObject Ġto Ġan ĠSQL Ġstring Ġwith Ġthe Ġproper Ġescap ing , Ġetc . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġappend Value To Sql ( sql : ĠStringBuilder , Ġvalue : ĠAny ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( value Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsql . append (" NULL ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( value Ġis ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbool Ġ= Ġvalue Ġas ĠBoolean ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( bool ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsql . append (' 1 ') ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsql . append (' 0 ') ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġappend Esc aped SQL String ( sql , Ġvalue . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠConcat en ates Ġtwo ĠSQL ĠWHERE Ġclauses , Ġhandling Ġempty Ġor Ġnull Ġvalues . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġconcatenate Where ( a : ĠString , Ġb : ĠString ): ĠString Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( a . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġb ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( b . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġa ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ" ($ a ) ĠAND Ġ($ b )" ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun ĠgetKey Len ( arr : ĠByteArray ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( arr [ arr . size Ġ- Ġ 1 ]. toInt () Ġ!= Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġarr . size ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġremove Ġzero Ġ" termination " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġarr . size Ġ- Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠPrints Ġthe Ġcontents Ġof Ġa ĠCursor Ġto Ġa ĠStringBuilder . ĠThe Ġposition ĊĠĠĠĠĠĠĠĠ Ġ* Ġis Ġrestored Ġafter Ġprinting . ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġcursor Ġthe Ġcursor Ġto Ġprint ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġsb Ġthe ĠStringBuilder Ġto Ġprint Ġto ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġdump Cursor ( cursor : ĠCursor , Ġsb : ĠStringBuilder ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsb . append ("> >>>> ĠDumping Ġcursor Ġ" Ġ+ Ġcursor Ġ+ Ġ"\ n ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( cursor Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġstart Pos Ġ= Ġcursor . getPosition () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcursor . moveTo Position (- 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ( cursor . moveTo Next ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdump Current Row ( cursor , Ġsb ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcursor . moveTo Position ( start Pos ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsb . append (" <<<< < \ n ") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠPrints Ġthe Ġcontents Ġof Ġa ĠCursor Ġto Ġa ĠString . ĠThe Ġposition Ġis Ġrestored ĊĠĠĠĠĠĠĠĠ Ġ* Ġafter Ġprinting . ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġcursor Ġthe Ġcursor Ġto Ġprint ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ return Ġa ĠString Ġthat Ġcontains Ġthe Ġdumped Ġcursor ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġdump Cursor ToString ( cursor : ĠCursor ): ĠString Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsb Ġ= ĠStringBuilder () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdump Cursor ( cursor , Ġsb ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġsb . toString () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠPrints Ġthe Ġcontents Ġof Ġa ĠCursor 's Ġcurrent Ġrow Ġto Ġa ĠStringBuilder . ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġcursor Ġthe Ġcursor Ġto Ġprint ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġsb Ġthe ĠStringBuilder Ġto Ġprint Ġto ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġdump Current Row ( cursor : ĠCursor , Ġsb : ĠStringBuilder ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcols Ġ= Ġcursor . getColumn Names () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsb . append ("" Ġ+ Ġcursor . getPosition () Ġ+ Ġ" Ġ{\ n ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlength Ġ= Ġcols . size ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġlength ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġvalue : ĠString ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalue Ġ= Ġcursor . getString ( i ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠSQLite Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġassume Ġthat Ġif Ġthe ĠgetString Ġthrew Ġthis Ġexception Ġthen Ġthe Ġcolumn Ġis Ġnot ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġrepresent able Ġby Ġa Ġstring , Ġe . g . Ġit Ġis Ġa ĠBLOB . ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalue Ġ= Ġ"< un print able >" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsb . append (" Ġ" Ġ+ Ġcols [ i ] Ġ+ Ġ'=' . toString () Ġ+ Ġvalue Ġ+ Ġ"\ n ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsb . append (" }\ n ") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠDump Ġthe Ġcontents Ġof Ġa ĠCursor 's Ġcurrent Ġrow Ġto Ġa ĠString . ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġcursor Ġthe Ġcursor Ġto Ġprint ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ return Ġa ĠString Ġthat Ġcontains Ġthe Ġdumped Ġcursor Ġrow ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġdump Current Row ToString ( cursor : ĠCursor ): ĠString Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsb Ġ= ĠStringBuilder () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdump Current Row ( cursor , Ġsb ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġsb . toString () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠReads Ġa ĠString Ġout Ġof Ġa Ġfield Ġin Ġa ĠCursor Ġand Ġwrites Ġit Ġto Ġa ĠMap . ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġcursor ĠThe Ġcursor Ġto Ġread Ġfrom ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġfield ĠThe ĠTEXT Ġfield Ġto Ġread ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġvalues ĠThe Ġ{@ link ĠContent Values } Ġto Ġput Ġthe Ġvalue Ġinto , Ġwith Ġthe Ġfield Ġas Ġthe Ġkey ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġcursor StringTo Content Values ( cursor : ĠCursor , Ġfield : ĠString , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalues : ĠContent Values ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcursor StringTo Content Values ( cursor , Ġfield , Ġvalues , Ġfield ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠReads Ġa ĠString Ġout Ġof Ġa Ġfield Ġin Ġa ĠCursor Ġand Ġwrites Ġit Ġto Ġa ĠMap . ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġcursor ĠThe Ġcursor Ġto Ġread Ġfrom ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġfield ĠThe ĠTEXT Ġfield Ġto Ġread ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġvalues ĠThe Ġ{@ link ĠContent Values } Ġto Ġput Ġthe Ġvalue Ġinto , Ġwith Ġthe Ġfield Ġas Ġthe Ġkey ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġkey ĠThe Ġkey Ġto Ġstore Ġthe Ġvalue Ġwith Ġin Ġthe Ġmap ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġcursor StringTo Content Values ( cursor : ĠCursor , Ġfield : ĠString , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalues : ĠContent Values , Ġkey : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvalues . put ( key , Ġcursor . getString ( cursor . getColumnIndex OrThrow ( field ))) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠReads Ġan ĠInteger Ġout Ġof Ġa Ġfield Ġin Ġa ĠCursor Ġand Ġwrites Ġit Ġto Ġa ĠMap . ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġcursor ĠThe Ġcursor Ġto Ġread Ġfrom ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġfield ĠThe ĠINTEGER Ġfield Ġto Ġread ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġvalues ĠThe Ġ{@ link ĠContent Values } Ġto Ġput Ġthe Ġvalue Ġinto , Ġwith Ġthe Ġfield Ġas Ġthe Ġkey ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġcursor Int To Content Values ( cursor : ĠCursor , Ġfield : ĠString , Ġvalues : ĠContent Values ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcursor Int To Content Values ( cursor , Ġfield , Ġvalues , Ġfield ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠReads Ġa ĠInteger Ġout Ġof Ġa Ġfield Ġin Ġa ĠCursor Ġand Ġwrites Ġit Ġto Ġa ĠMap . ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġcursor ĠThe Ġcursor Ġto Ġread Ġfrom ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġfield ĠThe ĠINTEGER Ġfield Ġto Ġread ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġvalues ĠThe Ġ{@ link ĠContent Values } Ġto Ġput Ġthe Ġvalue Ġinto , Ġwith Ġthe Ġfield Ġas Ġthe Ġkey ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġkey ĠThe Ġkey Ġto Ġstore Ġthe Ġvalue Ġwith Ġin Ġthe Ġmap ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġcursor Int To Content Values ( cursor : ĠCursor , Ġfield : ĠString , Ġvalues : ĠContent Values , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġkey : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcol Index Ġ= Ġcursor . getColumnIndex ( field ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! cursor . isNull ( col Index )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalues . put ( key , Ġcursor . getInt ( col Index )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalues . remove ( key ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠReads Ġa ĠLong Ġout Ġof Ġa Ġfield Ġin Ġa ĠCursor Ġand Ġwrites Ġit Ġto Ġa ĠMap . ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġcursor ĠThe Ġcursor Ġto Ġread Ġfrom ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġfield ĠThe ĠINTEGER Ġfield Ġto Ġread ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġvalues ĠThe Ġ{@ link ĠContent Values } Ġto Ġput Ġthe Ġvalue Ġinto , Ġwith Ġthe Ġfield Ġas Ġthe Ġkey ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġcursor Long To Content Values ( cursor : ĠCursor , Ġfield : ĠString , Ġvalues : ĠContent Values ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcursor Long To Content Values ( cursor , Ġfield , Ġvalues , Ġfield ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠReads Ġa ĠLong Ġout Ġof Ġa Ġfield Ġin Ġa ĠCursor Ġand Ġwrites Ġit Ġto Ġa ĠMap . ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġcursor ĠThe Ġcursor Ġto Ġread Ġfrom ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġfield ĠThe ĠINTEGER Ġfield Ġto Ġread ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġvalues ĠThe Ġ{@ link ĠContent Values } Ġto Ġput Ġthe Ġvalue Ġinto ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġkey ĠThe Ġkey Ġto Ġstore Ġthe Ġvalue Ġwith Ġin Ġthe Ġmap ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġcursor Long To Content Values ( cursor : ĠCursor , Ġfield : ĠString , Ġvalues : ĠContent Values , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġkey : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcol Index Ġ= Ġcursor . getColumnIndex ( field ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! cursor . isNull ( col Index )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvalue Ġ= Ġcursor . getLong ( col Index ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalues . put ( key , Ġvalue ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalues . remove ( key ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠReads Ġa ĠDouble Ġout Ġof Ġa Ġfield Ġin Ġa ĠCursor Ġand Ġwrites Ġit Ġto Ġa ĠMap . ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġcursor ĠThe Ġcursor Ġto Ġread Ġfrom ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġfield ĠThe ĠREAL Ġfield Ġto Ġread ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġvalues ĠThe Ġ{@ link ĠContent Values } Ġto Ġput Ġthe Ġvalue Ġinto ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġcursor Double To Cursor Values ( cursor : ĠCursor , Ġfield : ĠString , Ġvalues : ĠContent Values ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcursor Double To Content Values ( cursor , Ġfield , Ġvalues , Ġfield ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠReads Ġa ĠDouble Ġout Ġof Ġa Ġfield Ġin Ġa ĠCursor Ġand Ġwrites Ġit Ġto Ġa ĠMap . ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġcursor ĠThe Ġcursor Ġto Ġread Ġfrom ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġfield ĠThe ĠREAL Ġfield Ġto Ġread ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġvalues ĠThe Ġ{@ link ĠContent Values } Ġto Ġput Ġthe Ġvalue Ġinto ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġkey ĠThe Ġkey Ġto Ġstore Ġthe Ġvalue Ġwith Ġin Ġthe Ġmap ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġcursor Double To Content Values ( cursor : ĠCursor , Ġfield : ĠString , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalues : ĠContent Values , Ġkey : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcol Index Ġ= Ġcursor . getColumnIndex ( field ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! cursor . isNull ( col Index )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalues . put ( key , Ġcursor . getDouble ( col Index )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalues . remove ( key ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠRead Ġthe Ġentire Ġcontents Ġof Ġa Ġcursor Ġrow Ġand Ġstore Ġthem Ġin Ġa ĠContent Values . ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġcursor Ġthe Ġcursor Ġto Ġread Ġfrom . ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġvalues Ġthe Ġ{@ link ĠContent Values } Ġto Ġput Ġthe Ġrow Ġinto . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġcursor Row To Content Values ( cursor : ĠCursor , Ġvalues : ĠContent Values ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġaw c Ġ= Ġif Ġ(( cursor Ġis ĠAbstract Window ed Cursor )) Ġcursor Ġas ĠAbstract Window ed Cursor Ġelse Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcolumns Ġ= Ġcursor . getColumn Names () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlength Ġ= Ġcolumns . size ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġlength ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( aw c Ġ!= Ġnull Ġ&& Ġaw c . is Blob ( i )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalues . put ( columns [ i ], Ġcursor . get Blob ( i )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalues . put ( columns [ i ], Ġcursor . getString ( i )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠP icks Ġa Ġstart Ġposition Ġfor Ġ{@ link ĠCursor # Ġfill Window } Ġsuch Ġthat Ġthe ĊĠĠĠĠĠĠĠĠ Ġ* Ġwindow Ġwill Ġcontain Ġthe Ġrequested Ġrow Ġand Ġa Ġuseful Ġrange Ġof Ġrows ĊĠĠĠĠĠĠĠĠ Ġ* Ġaround Ġit . ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* ĠWhen Ġthe Ġdata Ġset Ġis Ġtoo Ġlarge Ġto Ġfit Ġin Ġa Ġcursor Ġwindow , Ġsee king Ġthe ĊĠĠĠĠĠĠĠĠ Ġ* Ġcursor Ġcan Ġbecome Ġa Ġvery Ġexpensive Ġoperation Ġsince Ġwe Ġhave Ġto Ġrun Ġthe ĊĠĠĠĠĠĠĠĠ Ġ* Ġquery Ġagain Ġwhen Ġwe Ġmove Ġoutside Ġthe Ġbounds Ġof Ġthe Ġcurrent Ġwindow . ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* ĠWe Ġtry Ġto Ġchoose Ġa Ġstart Ġposition Ġfor Ġthe Ġcursor Ġwindow Ġsuch Ġthat ĊĠĠĠĠĠĠĠĠ Ġ* Ġ 1 / 3 Ġof Ġthe Ġwindow 's Ġcapacity Ġis Ġused Ġto Ġhold Ġrows Ġbefore Ġthe Ġrequested ĊĠĠĠĠĠĠĠĠ Ġ* Ġposition Ġand Ġ 2 / 3 Ġof Ġthe Ġwindow 's Ġcapacity Ġis Ġused Ġto Ġhold Ġrows Ġafter Ġthe ĊĠĠĠĠĠĠĠĠ Ġ* Ġrequested Ġposition . ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġcursor Position ĠThe Ġrow Ġindex Ġof Ġthe Ġrow Ġwe Ġwant Ġto Ġget . ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġcursor Window Capacity ĠThe Ġestimated Ġnumber Ġof Ġrows Ġthat Ġcan Ġfit Ġin ĊĠĠĠĠĠĠĠĠ Ġ* Ġa Ġcursor Ġwindow , Ġor Ġ 0 Ġif Ġunknown . ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ return ĠThe Ġrecommended Ġstart Ġposition , Ġalways Ġless Ġthan Ġor Ġequal Ġto ĊĠĠĠĠĠĠĠĠ Ġ* Ġthe Ġrequested Ġrow . ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ hide ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġcursor Pick Fill Window Start Position ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcursor Position : ĠInt , Ġcursor Window Capacity : ĠInt ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġmax ( cursor Position Ġ- Ġcursor Window Capacity Ġ/ Ġ 3 , Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠQuery Ġthe Ġtable Ġfor Ġthe Ġnumber Ġof Ġrows Ġin Ġthe Ġtable . ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġdb Ġthe Ġdatabase Ġthe Ġtable Ġis Ġin ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġtable Ġthe Ġname Ġof Ġthe Ġtable Ġto Ġquery ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ return Ġthe Ġnumber Ġof Ġrows Ġin Ġthe Ġtable ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġquery Num Entries ( db : ĠSQLite Database , Ġtable : ĠString ): ĠLong Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġquery Num Entries ( db , Ġtable , Ġnull , Ġnull ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠQuery Ġthe Ġtable Ġfor Ġthe Ġnumber Ġof Ġrows Ġin Ġthe Ġtable . ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġdb Ġthe Ġdatabase Ġthe Ġtable Ġis Ġin ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġtable Ġthe Ġname Ġof Ġthe Ġtable Ġto Ġquery ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġselection ĠA Ġfilter Ġdeclaring Ġwhich Ġrows Ġto Ġreturn , ĊĠĠĠĠĠĠĠĠ Ġ* Ġformatted Ġas Ġan ĠSQL ĠWHERE Ġclause Ġ( ex cluding Ġthe ĠWHERE Ġitself ). ĊĠĠĠĠĠĠĠĠ Ġ* ĠPass ing Ġnull Ġwill Ġcount Ġall Ġrows Ġfor Ġthe Ġgiven Ġtable ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ return Ġthe Ġnumber Ġof Ġrows Ġin Ġthe Ġtable Ġfiltered Ġby Ġthe Ġselection ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġquery Num Entries ( db : ĠSQLite Database , Ġtable : ĠString , Ġselection : ĠString ?): ĠLong Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġquery Num Entries ( db , Ġtable , Ġselection , Ġnull ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠQuery Ġthe Ġtable Ġfor Ġthe Ġnumber Ġof Ġrows Ġin Ġthe Ġtable . ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġdb Ġthe Ġdatabase Ġthe Ġtable Ġis Ġin ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġtable Ġthe Ġname Ġof Ġthe Ġtable Ġto Ġquery ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġselection ĠA Ġfilter Ġdeclaring Ġwhich Ġrows Ġto Ġreturn , ĊĠĠĠĠĠĠĠĠ Ġ* Ġformatted Ġas Ġan ĠSQL ĠWHERE Ġclause Ġ( ex cluding Ġthe ĠWHERE Ġitself ). ĊĠĠĠĠĠĠĠĠ Ġ* ĠPass ing Ġnull Ġwill Ġcount Ġall Ġrows Ġfor Ġthe Ġgiven Ġtable ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġselection Args ĠYou Ġmay Ġinclude Ġ? s Ġin Ġselection , ĊĠĠĠĠĠĠĠĠ Ġ* Ġwhich Ġwill Ġbe Ġreplaced Ġby Ġthe Ġvalues Ġfrom Ġselection Args , ĊĠĠĠĠĠĠĠĠ Ġ* Ġin Ġorder Ġthat Ġthey Ġappear Ġin Ġthe Ġselection . ĊĠĠĠĠĠĠĠĠ Ġ* ĠThe Ġvalues Ġwill Ġbe Ġbound Ġas ĠStrings . ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ return Ġthe Ġnumber Ġof Ġrows Ġin Ġthe Ġtable Ġfiltered Ġby Ġthe Ġselection ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġquery Num Entries ( db : ĠSQLite Database , Ġtable : ĠString , Ġselection : ĠString ?, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġselection Args : ĠArray < String >? ): ĠLong Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġs Ġ= Ġif Ġ((! selection . isNull OrEmpty ())) Ġ" Ġwhere Ġ" Ġ+ Ġselection Ġelse Ġ"" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġlong For Query ( db , Ġ" select Ġcount (*) Ġfrom Ġ" Ġ+ Ġtable Ġ+ Ġs , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġselection Args ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠQuery Ġthe Ġtable Ġto Ġcheck Ġwhether Ġa Ġtable Ġis Ġempty Ġor Ġnot ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġdb Ġthe Ġdatabase Ġthe Ġtable Ġis Ġin ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġtable Ġthe Ġname Ġof Ġthe Ġtable Ġto Ġquery ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ return ĠTrue Ġif Ġthe Ġtable Ġis Ġempty ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ hide ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġquery IsEmpty ( db : ĠSQLite Database , Ġtable : ĠString ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠisEmpty Ġ= Ġlong For Query ( db , Ġ" select Ġexists ( select Ġ 1 Ġfrom Ġ" Ġ+ Ġtable Ġ+ Ġ" )", Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠisEmpty Ġ== Ġ 0 L ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠUtility Ġmethod Ġto Ġrun Ġthe Ġquery Ġon Ġthe Ġdb Ġand Ġreturn Ġthe Ġvalue Ġin Ġthe ĊĠĠĠĠĠĠĠĠ Ġ* Ġfirst Ġcolumn Ġof Ġthe Ġfirst Ġrow . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġlong For Query ( db : ĠSQLite Database , Ġquery : ĠString , Ġselection Args : ĠArray < String >? ): ĠLong Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġprog Ġ= Ġdb . compile Statement ( query ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġlong For Query ( prog , Ġselection Args ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġfinally Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprog . close () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠUtility Ġmethod Ġto Ġrun Ġthe Ġpre - compiled Ġquery Ġand Ġreturn Ġthe Ġvalue Ġin Ġthe ĊĠĠĠĠĠĠĠĠ Ġ* Ġfirst Ġcolumn Ġof Ġthe Ġfirst Ġrow . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġlong For Query ( prog : ĠSQLite Statement , Ġselection Args : ĠArray < String >? ): ĠLong Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprog . bind All Args As Strings ( selection Args ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġprog . simple Query For Long () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠUtility Ġmethod Ġto Ġrun Ġthe Ġquery Ġon Ġthe Ġdb Ġand Ġreturn Ġthe Ġvalue Ġin Ġthe ĊĠĠĠĠĠĠĠĠ Ġ* Ġfirst Ġcolumn Ġof Ġthe Ġfirst Ġrow . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġstring For Query ( db : ĠSQLite Database , Ġquery : ĠString , Ġselection Args : ĠArray < String >? ): ĠString ? Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġprog Ġ= Ġdb . compile Statement ( query ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġstring For Query ( prog , Ġselection Args ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġfinally Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprog . close () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠUtility Ġmethod Ġto Ġrun Ġthe Ġpre - compiled Ġquery Ġand Ġreturn Ġthe Ġvalue Ġin Ġthe ĊĠĠĠĠĠĠĠĠ Ġ* Ġfirst Ġcolumn Ġof Ġthe Ġfirst Ġrow . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġstring For Query ( prog : ĠSQLite Statement , Ġselection Args : ĠArray < String >? ): ĠString ? Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprog . bind All Args As Strings ( selection Args ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġprog . simple Query For String () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠReads Ġa ĠString Ġout Ġof Ġa Ġcolumn Ġin Ġa ĠCursor Ġand Ġwrites Ġit Ġto Ġa ĠContent Values . ĊĠĠĠĠĠĠĠĠ Ġ* ĠAdds Ġnothing Ġto Ġthe ĠContent Values Ġif Ġthe Ġcolumn Ġisn 't Ġpresent Ġor Ġif Ġits Ġvalue Ġis Ġnull . ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġcursor ĠThe Ġcursor Ġto Ġread Ġfrom ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġcolumn ĠThe Ġcolumn Ġto Ġread ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġvalues ĠThe Ġ{@ link ĠContent Values } Ġto Ġput Ġthe Ġvalue Ġinto ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġcursor StringTo Content Values If Present ( cursor : ĠCursor , Ġvalues : ĠContent Values , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcolumn : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġindex Ġ= Ġcursor . getColumnIndex ( column ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( index Ġ!= Ġ- 1 Ġ&& Ġ! cursor . isNull ( index )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalues . put ( column , Ġcursor . getString ( index )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠReads Ġa ĠLong Ġout Ġof Ġa Ġcolumn Ġin Ġa ĠCursor Ġand Ġwrites Ġit Ġto Ġa ĠContent Values . ĊĠĠĠĠĠĠĠĠ Ġ* ĠAdds Ġnothing Ġto Ġthe ĠContent Values Ġif Ġthe Ġcolumn Ġisn 't Ġpresent Ġor Ġif Ġits Ġvalue Ġis Ġnull . ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġcursor ĠThe Ġcursor Ġto Ġread Ġfrom ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġcolumn ĠThe Ġcolumn Ġto Ġread ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġvalues ĠThe Ġ{@ link ĠContent Values } Ġto Ġput Ġthe Ġvalue Ġinto ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġcursor Long To Content Values If Present ( cursor : ĠCursor , Ġvalues : ĠContent Values , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcolumn : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġindex Ġ= Ġcursor . getColumnIndex ( column ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( index Ġ!= Ġ- 1 Ġ&& Ġ! cursor . isNull ( index )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalues . put ( column , Ġcursor . getLong ( index )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠReads Ġa ĠShort Ġout Ġof Ġa Ġcolumn Ġin Ġa ĠCursor Ġand Ġwrites Ġit Ġto Ġa ĠContent Values . ĊĠĠĠĠĠĠĠĠ Ġ* ĠAdds Ġnothing Ġto Ġthe ĠContent Values Ġif Ġthe Ġcolumn Ġisn 't Ġpresent Ġor Ġif Ġits Ġvalue Ġis Ġnull . ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġcursor ĠThe Ġcursor Ġto Ġread Ġfrom ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġcolumn ĠThe Ġcolumn Ġto Ġread ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġvalues ĠThe Ġ{@ link ĠContent Values } Ġto Ġput Ġthe Ġvalue Ġinto ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġcursor Short To Content Values If Present ( cursor : ĠCursor , Ġvalues : ĠContent Values , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcolumn : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġindex Ġ= Ġcursor . getColumnIndex ( column ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( index Ġ!= Ġ- 1 Ġ&& Ġ! cursor . isNull ( index )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalues . put ( column , Ġcursor . get Short ( index )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠReads Ġa ĠInteger Ġout Ġof Ġa Ġcolumn Ġin Ġa ĠCursor Ġand Ġwrites Ġit Ġto Ġa ĠContent Values . ĊĠĠĠĠĠĠĠĠ Ġ* ĠAdds Ġnothing Ġto Ġthe ĠContent Values Ġif Ġthe Ġcolumn Ġisn 't Ġpresent Ġor Ġif Ġits Ġvalue Ġis Ġnull . ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġcursor ĠThe Ġcursor Ġto Ġread Ġfrom ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġcolumn ĠThe Ġcolumn Ġto Ġread ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġvalues ĠThe Ġ{@ link ĠContent Values } Ġto Ġput Ġthe Ġvalue Ġinto ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġcursor Int To Content Values If Present ( cursor : ĠCursor , Ġvalues : ĠContent Values , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcolumn : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġindex Ġ= Ġcursor . getColumnIndex ( column ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( index Ġ!= Ġ- 1 Ġ&& Ġ! cursor . isNull ( index )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalues . put ( column , Ġcursor . getInt ( index )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠReads Ġa ĠFloat Ġout Ġof Ġa Ġcolumn Ġin Ġa ĠCursor Ġand Ġwrites Ġit Ġto Ġa ĠContent Values . ĊĠĠĠĠĠĠĠĠ Ġ* ĠAdds Ġnothing Ġto Ġthe ĠContent Values Ġif Ġthe Ġcolumn Ġisn 't Ġpresent Ġor Ġif Ġits Ġvalue Ġis Ġnull . ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġcursor ĠThe Ġcursor Ġto Ġread Ġfrom ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġcolumn ĠThe Ġcolumn Ġto Ġread ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġvalues ĠThe Ġ{@ link ĠContent Values } Ġto Ġput Ġthe Ġvalue Ġinto ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġcursor Float To Content Values If Present ( cursor : ĠCursor , Ġvalues : ĠContent Values , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcolumn : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġindex Ġ= Ġcursor . getColumnIndex ( column ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( index Ġ!= Ġ- 1 Ġ&& Ġ! cursor . isNull ( index )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalues . put ( column , Ġcursor . get Float ( index )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠReads Ġa ĠDouble Ġout Ġof Ġa Ġcolumn Ġin Ġa ĠCursor Ġand Ġwrites Ġit Ġto Ġa ĠContent Values . ĊĠĠĠĠĠĠĠĠ Ġ* ĠAdds Ġnothing Ġto Ġthe ĠContent Values Ġif Ġthe Ġcolumn Ġisn 't Ġpresent Ġor Ġif Ġits Ġvalue Ġis Ġnull . ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġcursor ĠThe Ġcursor Ġto Ġread Ġfrom ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġcolumn ĠThe Ġcolumn Ġto Ġread ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġvalues ĠThe Ġ{@ link ĠContent Values } Ġto Ġput Ġthe Ġvalue Ġinto ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġcursor Double To Content Values If Present ( cursor : ĠCursor , Ġvalues : ĠContent Values , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcolumn : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġindex Ġ= Ġcursor . getColumnIndex ( column ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( index Ġ!= Ġ- 1 Ġ&& Ġ! cursor . isNull ( index )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalues . put ( column , Ġcursor . getDouble ( index )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠCreates Ġa Ġdb Ġand Ġpop ulates Ġit Ġwith Ġthe Ġsql Ġstatements Ġin Ġsql Statements . ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġcontext Ġthe Ġcontext Ġto Ġuse Ġto Ġcreate Ġthe Ġdb ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġdb Name Ġthe Ġname Ġof Ġthe Ġdb Ġto Ġcreate ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġdb Version Ġthe Ġversion Ġto Ġset Ġon Ġthe Ġdb ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġsql Statements Ġthe Ġstatements Ġto Ġuse Ġto Ġpopulate Ġthe Ġdb . ĠThis Ġshould Ġbe Ġa Ġsingle Ġstring ĊĠĠĠĠĠĠĠĠ Ġ* Ġof Ġthe Ġform Ġreturned Ġby Ġsqlite 3 's Ġ< tt >. dump </ tt > Ġcommand Ġ( statements Ġseparated Ġby ĊĠĠĠĠĠĠĠĠ Ġ* Ġsem icol ons ) ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġcreate Db From Sql Statements ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext : System Context , Ġdb Name : String , Ġdb Version : Int , Ġsql Statements : String ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdb Ġ= Ġcontext . open OrCreate Database ( dbName , Ġ 0 , Ġnull , Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠTODO : Ġthis Ġis Ġnot Ġquite Ġsafe Ġsince Ġit Ġassumes Ġthat Ġall Ġsem icol ons Ġat Ġthe Ġend Ġof Ġa Ġline ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġterminate Ġstatements . ĠIt Ġis Ġpossible Ġthat Ġa Ġtext Ġfield Ġcontains Ġ; \ n . ĠWe Ġwill Ġhave Ġto Ġfix ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġthis Ġif Ġthat Ġturns Ġout Ġto Ġbe Ġa Ġproblem . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġstatements Ġ= Ġsql Statements . split (" ;\ n ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( statement Ġin Ġstatements ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( statement . isEmpty ()) Ġcontinue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdb . exec SQL ( statement ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdb . set Version ( db Version ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdb . close () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠReturns Ġone Ġof Ġthe Ġfollowing Ġwhich Ġrepresent Ġthe Ġtype Ġof Ġthe Ġgiven ĠSQL Ġstatement . ĊĠĠĠĠĠĠĠĠ Ġ* Ġ< ol > ĊĠĠĠĠĠĠĠĠ Ġ* Ġ< li >{@ link Ġ# STATE MENT _ SELECT }</ li > ĊĠĠĠĠĠĠĠĠ Ġ* Ġ< li >{@ link Ġ# STATE MENT _ UPDATE }</ li > ĊĠĠĠĠĠĠĠĠ Ġ* Ġ< li >{@ link Ġ# STATE MENT _ ATTACH }</ li > ĊĠĠĠĠĠĠĠĠ Ġ* Ġ< li >{@ link Ġ# STATE MENT _ BEGIN }</ li > ĊĠĠĠĠĠĠĠĠ Ġ* Ġ< li >{@ link Ġ# STATE MENT _ COMMIT }</ li > ĊĠĠĠĠĠĠĠĠ Ġ* Ġ< li >{@ link Ġ# STATE MENT _ ABORT }</ li > ĊĠĠĠĠĠĠĠĠ Ġ* Ġ< li >{@ link Ġ# STATE MENT _ OTHER }</ li > ĊĠĠĠĠĠĠĠĠ Ġ* Ġ</ ol > ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġsql Ġthe ĠSQL Ġstatement Ġwhose Ġtype Ġis Ġreturned Ġby Ġthis Ġmethod ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ return Ġone Ġof Ġthe Ġvalues Ġlisted Ġabove ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġget Sql Statement Type ( sql Arg : ĠString ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsql Ġ= Ġsql Arg . trim ({ Ġit Ġ<= Ġ' Ġ' Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( sql . length Ġ< Ġ 3 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠSTATE MENT _ OTHER ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġprefix Sql Ġ= Ġsql . substring ( 0 , Ġ 3 ). toUpperCase () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( prefix Sql Ġ== Ġ" SEL ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠSTATE MENT _ SELECT ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ(( prefix Sql Ġ== Ġ" INS " Ġ|| ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprefix Sql Ġ== Ġ" UPD " Ġ|| ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprefix Sql Ġ== Ġ" REP " Ġ|| ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprefix Sql Ġ== Ġ" DEL ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠSTATE MENT _ UPDATE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( prefix Sql Ġ== Ġ" ATT ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠSTATE MENT _ ATTACH ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( prefix Sql Ġ== Ġ" COM ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠSTATE MENT _ COMMIT ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( prefix Sql Ġ== Ġ" END ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠSTATE MENT _ COMMIT ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( prefix Sql Ġ== Ġ" ROL ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠSTATE MENT _ ABORT ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( prefix Sql Ġ== Ġ" BE G ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠSTATE MENT _ BEGIN ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( prefix Sql Ġ== Ġ" PR A ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠSTATE MENT _ PR AG MA ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ(( prefix Sql Ġ== Ġ" CRE " Ġ|| Ġprefix Sql Ġ== Ġ" D RO " Ġ|| ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprefix Sql Ġ== Ġ" ALT ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠSTATE MENT _ DDL ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( prefix Sql Ġ== Ġ" ANA " Ġ|| Ġprefix Sql Ġ== Ġ" DET ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠSTATE MENT _ UN PRE PARE D ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠSTATE MENT _ OTHER ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠReturns Ġcolumn Ġindex Ġof Ġ"_ id " Ġcolumn , Ġor Ġ- 1 Ġif Ġnot Ġfound . ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ hide ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġfind Row Id Column Index ( column Names : ĠArray < String >): ĠInt Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlength Ġ= Ġcolumn Names . size ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġlength ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( column Names [ i ] Ġ== Ġ"_ id ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġi ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ- 1 ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} Ċ }