PNG  IHDRX cHRMz&u0`:pQ<bKGD pHYsodtIME MeqIDATxw]Wug^Qd˶ 6`!N:!@xI~)%7%@Bh&`lnjVF29gΨ4E$|>cɚ{gk= %,a KX%,a KX%,a KX%,a KX%,a KX%,a KX%, b` ǟzeאfp]<!SJmɤY޲ڿ,%c ~ع9VH.!Ͳz&QynֺTkRR.BLHi٪:l;@(!MԴ=žI,:o&N'Kù\vRmJ雵֫AWic H@" !: Cé||]k-Ha oݜ:y F())u]aG7*JV@J415p=sZH!=!DRʯvɱh~V\}v/GKY$n]"X"}t@ xS76^[bw4dsce)2dU0 CkMa-U5tvLƀ~mlMwfGE/-]7XAƟ`׮g ewxwC4\[~7@O-Q( a*XGƒ{ ՟}$_y3tĐƤatgvێi|K=uVyrŲlLӪuܿzwk$m87k( `múcE)"@rK( z4$D; 2kW=Xb$V[Ru819קR~qloѱDyįݎ*mxw]y5e4K@ЃI0A D@"BDk_)N\8͜9dz"fK0zɿvM /.:2O{ Nb=M=7>??Zuo32 DLD@D| &+֎C #B8ַ`bOb $D#ͮҪtx]%`ES`Ru[=¾!@Od37LJ0!OIR4m]GZRJu$‡c=%~s@6SKy?CeIh:[vR@Lh | (BhAMy=݃  G"'wzn޺~8ԽSh ~T*A:xR[ܹ?X[uKL_=fDȊ؂p0}7=D$Ekq!/t.*2ʼnDbŞ}DijYaȲ(""6HA;:LzxQ‘(SQQ}*PL*fc\s `/d'QXW, e`#kPGZuŞuO{{wm[&NBTiiI0bukcA9<4@SӊH*؎4U/'2U5.(9JuDfrޱtycU%j(:RUbArLֺN)udA':uGQN"-"Is.*+k@ `Ojs@yU/ H:l;@yyTn}_yw!VkRJ4P)~y#)r,D =ě"Q]ci'%HI4ZL0"MJy 8A{ aN<8D"1#IJi >XjX֔#@>-{vN!8tRݻ^)N_╗FJEk]CT՟ YP:_|H1@ CBk]yKYp|og?*dGvzنzӴzjֺNkC~AbZƷ`.H)=!QͷVTT(| u78y֮}|[8-Vjp%2JPk[}ԉaH8Wpqhwr:vWª<}l77_~{s۴V+RCģ%WRZ\AqHifɤL36: #F:p]Bq/z{0CU6ݳEv_^k7'>sq*+kH%a`0ԣisqにtү04gVgW΂iJiS'3w.w}l6MC2uԯ|>JF5`fV5m`Y**Db1FKNttu]4ccsQNnex/87+}xaUW9y>ͯ骵G{䩓Գ3+vU}~jJ.NFRD7<aJDB1#ҳgSb,+CS?/ VG J?|?,2#M9}B)MiE+G`-wo߫V`fio(}S^4e~V4bHOYb"b#E)dda:'?}׮4繏`{7Z"uny-?ǹ;0MKx{:_pÚmFמ:F " .LFQLG)Q8qN q¯¯3wOvxDb\. BKD9_NN &L:4D{mm o^tֽ:q!ƥ}K+<"m78N< ywsard5+вz~mnG)=}lYݧNj'QJS{S :UYS-952?&O-:W}(!6Mk4+>A>j+i|<<|;ر^߉=HE|V#F)Emm#}/"y GII웻Jі94+v뾧xu~5C95~ūH>c@덉pʃ1/4-A2G%7>m;–Y,cyyaln" ?ƻ!ʪ<{~h~i y.zZB̃/,雋SiC/JFMmBH&&FAbϓO^tubbb_hZ{_QZ-sύodFgO(6]TJA˯#`۶ɟ( %$&+V'~hiYy>922 Wp74Zkq+Ovn錄c>8~GqܲcWꂎz@"1A.}T)uiW4="jJ2W7mU/N0gcqܗOO}?9/wìXžΏ0 >֩(V^Rh32!Hj5`;O28؇2#ݕf3 ?sJd8NJ@7O0 b־?lldщ̡&|9C.8RTWwxWy46ah嘦mh٤&l zCy!PY?: CJyв]dm4ǜҐR޻RլhX{FƯanшQI@x' ao(kUUuxW_Ñ줮[w8 FRJ(8˼)_mQ _!RJhm=!cVmm ?sFOnll6Qk}alY}; "baӌ~M0w,Ggw2W:G/k2%R,_=u`WU R.9T"v,<\Ik޽/2110Ӿxc0gyC&Ny޽JҢrV6N ``یeA16"J³+Rj*;BϜkZPJaÍ<Jyw:NP8/D$ 011z֊Ⱳ3ι֘k1V_"h!JPIΣ'ɜ* aEAd:ݺ>y<}Lp&PlRfTb1]o .2EW\ͮ]38؋rTJsǏP@芎sF\> P^+dYJLbJ C-xϐn> ι$nj,;Ǖa FU *择|h ~izť3ᤓ`K'-f tL7JK+vf2)V'-sFuB4i+m+@My=O҈0"|Yxoj,3]:cо3 $#uŘ%Y"y죯LebqtҢVzq¼X)~>4L׶m~[1_k?kxֺQ`\ |ٛY4Ѯr!)N9{56(iNq}O()Em]=F&u?$HypWUeB\k]JɩSع9 Zqg4ZĊo oMcjZBU]B\TUd34ݝ~:7ڶSUsB0Z3srx 7`:5xcx !qZA!;%͚7&P H<WL!džOb5kF)xor^aujƍ7 Ǡ8/p^(L>ὴ-B,{ۇWzֺ^k]3\EE@7>lYBȝR.oHnXO/}sB|.i@ɥDB4tcm,@ӣgdtJ!lH$_vN166L__'Z)y&kH;:,Y7=J 9cG) V\hjiE;gya~%ks_nC~Er er)muuMg2;֫R)Md) ,¶ 2-wr#F7<-BBn~_(o=KO㭇[Xv eN_SMgSҐ BS헃D%g_N:/pe -wkG*9yYSZS.9cREL !k}<4_Xs#FmҶ:7R$i,fi!~' # !6/S6y@kZkZcX)%5V4P]VGYq%H1!;e1MV<!ϐHO021Dp= HMs~~a)ަu7G^];git!Frl]H/L$=AeUvZE4P\.,xi {-~p?2b#amXAHq)MWǾI_r`S Hz&|{ +ʖ_= (YS(_g0a03M`I&'9vl?MM+m~}*xT۲(fY*V4x@29s{DaY"toGNTO+xCAO~4Ϳ;p`Ѫ:>Ҵ7K 3}+0 387x\)a"/E>qpWB=1 ¨"MP(\xp߫́A3+J] n[ʼnӼaTbZUWb={~2ooKױӰp(CS\S筐R*JغV&&"FA}J>G֐p1ٸbk7 ŘH$JoN <8s^yk_[;gy-;߉DV{c B yce% aJhDȶ 2IdйIB/^n0tNtџdcKj4϶v~- CBcgqx9= PJ) dMsjpYB] GD4RDWX +h{y`,3ꊕ$`zj*N^TP4L:Iz9~6s) Ga:?y*J~?OrMwP\](21sZUD ?ܟQ5Q%ggW6QdO+\@ ̪X'GxN @'4=ˋ+*VwN ne_|(/BDfj5(Dq<*tNt1х!MV.C0 32b#?n0pzj#!38}޴o1KovCJ`8ŗ_"]] rDUy޲@ Ȗ-;xџ'^Y`zEd?0„ DAL18IS]VGq\4o !swV7ˣι%4FѮ~}6)OgS[~Q vcYbL!wG3 7띸*E Pql8=jT\꘿I(z<[6OrR8ºC~ډ]=rNl[g|v TMTղb-o}OrP^Q]<98S¤!k)G(Vkwyqyr޽Nv`N/e p/~NAOk \I:G6]4+K;j$R:Mi #*[AȚT,ʰ,;N{HZTGMoּy) ]%dHء9Պ䠬|<45,\=[bƟ8QXeB3- &dҩ^{>/86bXmZ]]yޚN[(WAHL$YAgDKp=5GHjU&99v簪C0vygln*P)9^͞}lMuiH!̍#DoRBn9l@ xA/_v=ȺT{7Yt2N"4!YN`ae >Q<XMydEB`VU}u]嫇.%e^ánE87Mu\t`cP=AD/G)sI"@MP;)]%fH9'FNsj1pVhY&9=0pfuJ&gޤx+k:!r˭wkl03׼Ku C &ѓYt{.O.zҏ z}/tf_wEp2gvX)GN#I ݭ߽v/ .& и(ZF{e"=V!{zW`, ]+LGz"(UJp|j( #V4, 8B 0 9OkRrlɱl94)'VH9=9W|>PS['G(*I1==C<5"Pg+x'K5EMd؞Af8lG ?D FtoB[je?{k3zQ vZ;%Ɠ,]E>KZ+T/ EJxOZ1i #T<@ I}q9/t'zi(EMqw`mYkU6;[t4DPeckeM;H}_g pMww}k6#H㶏+b8雡Sxp)&C $@'b,fPߑt$RbJ'vznuS ~8='72_`{q纶|Q)Xk}cPz9p7O:'|G~8wx(a 0QCko|0ASD>Ip=4Q, d|F8RcU"/KM opKle M3#i0c%<7׿p&pZq[TR"BpqauIp$ 8~Ĩ!8Սx\ւdT>>Z40ks7 z2IQ}ItԀ<-%S⍤};zIb$I 5K}Q͙D8UguWE$Jh )cu4N tZl+[]M4k8֦Zeq֮M7uIqG 1==tLtR,ƜSrHYt&QP윯Lg' I,3@P'}'R˪e/%-Auv·ñ\> vDJzlӾNv5:|K/Jb6KI9)Zh*ZAi`?S {aiVDԲuy5W7pWeQJk֤#5&V<̺@/GH?^τZL|IJNvI:'P=Ϛt"¨=cud S Q.Ki0 !cJy;LJR;G{BJy޺[^8fK6)=yʊ+(k|&xQ2`L?Ȓ2@Mf 0C`6-%pKpm')c$׻K5[J*U[/#hH!6acB JA _|uMvDyk y)6OPYjœ50VT K}cǻP[ $:]4MEA.y)|B)cf-A?(e|lɉ#P9V)[9t.EiQPDѠ3ϴ;E:+Օ t ȥ~|_N2,ZJLt4! %ա]u {+=p.GhNcŞQI?Nd'yeh n7zi1DB)1S | S#ًZs2|Ɛy$F SxeX{7Vl.Src3E℃Q>b6G ўYCmtկ~=K0f(=LrAS GN'ɹ9<\!a`)֕y[uՍ[09` 9 +57ts6}b4{oqd+J5fa/,97J#6yν99mRWxJyѡyu_TJc`~W>l^q#Ts#2"nD1%fS)FU w{ܯ R{ ˎ󅃏џDsZSQS;LV;7 Od1&1n$ N /.q3~eNɪ]E#oM~}v֯FڦwyZ=<<>Xo稯lfMFV6p02|*=tV!c~]fa5Y^Q_WN|Vs 0ҘދU97OI'N2'8N֭fgg-}V%y]U4 峧p*91#9U kCac_AFңĪy뚇Y_AiuYyTTYЗ-(!JFLt›17uTozc. S;7A&&<ԋ5y;Ro+:' *eYJkWR[@F %SHWP 72k4 qLd'J "zB6{AC0ƁA6U.'F3:Ȅ(9ΜL;D]m8ڥ9}dU "v!;*13Rg^fJyShyy5auA?ɩGHRjo^]׽S)Fm\toy 4WQS@mE#%5ʈfFYDX ~D5Ϡ9tE9So_aU4?Ѽm%&c{n>.KW1Tlb}:j uGi(JgcYj0qn+>) %\!4{LaJso d||u//P_y7iRJ߬nHOy) l+@$($VFIQ9%EeKʈU. ia&FY̒mZ=)+qqoQn >L!qCiDB;Y<%} OgBxB!ØuG)WG9y(Ą{_yesuZmZZey'Wg#C~1Cev@0D $a@˲(.._GimA:uyw֬%;@!JkQVM_Ow:P.s\)ot- ˹"`B,e CRtaEUP<0'}r3[>?G8xU~Nqu;Wm8\RIkբ^5@k+5(By'L&'gBJ3ݶ!/㮻w҅ yqPWUg<e"Qy*167΃sJ\oz]T*UQ<\FԎ`HaNmڜ6DysCask8wP8y9``GJ9lF\G g's Nn͵MLN֪u$| /|7=]O)6s !ĴAKh]q_ap $HH'\1jB^s\|- W1:=6lJBqjY^LsPk""`]w)󭃈,(HC ?䔨Y$Sʣ{4Z+0NvQkhol6C.婧/u]FwiVjZka&%6\F*Ny#8O,22+|Db~d ~Çwc N:FuuCe&oZ(l;@ee-+Wn`44AMK➝2BRՈt7g*1gph9N) *"TF*R(#'88pm=}X]u[i7bEc|\~EMn}P瘊J)K.0i1M6=7'_\kaZ(Th{K*GJyytw"IO-PWJk)..axӝ47"89Cc7ĐBiZx 7m!fy|ϿF9CbȩV 9V-՛^pV̌ɄS#Bv4-@]Vxt-Z, &ֺ*diؠ2^VXbs֔Ìl.jQ]Y[47gj=幽ex)A0ip׳ W2[ᎇhuE^~q흙L} #-b۸oFJ_QP3r6jr+"nfzRJTUqoaۍ /$d8Mx'ݓ= OՃ| )$2mcM*cЙj}f };n YG w0Ia!1Q.oYfr]DyISaP}"dIӗթO67jqR ҊƐƈaɤGG|h;t]䗖oSv|iZqX)oalv;۩meEJ\!8=$4QU4Xo&VEĊ YS^E#d,yX_> ۘ-e\ "Wa6uLĜZi`aD9.% w~mB(02G[6y.773a7 /=o7D)$Z 66 $bY^\CuP. (x'"J60׿Y:Oi;F{w佩b+\Yi`TDWa~|VH)8q/=9!g߆2Y)?ND)%?Ǐ`k/sn:;O299yB=a[Ng 3˲N}vLNy;*?x?~L&=xyӴ~}q{qE*IQ^^ͧvü{Huu=R|>JyUlZV, B~/YF!Y\u_ݼF{_C)LD]m {H 0ihhadd nUkf3oٺCvE\)QJi+֥@tDJkB$1!Đr0XQ|q?d2) Ӣ_}qv-< FŊ߫%roppVBwü~JidY4:}L6M7f٬F "?71<2#?Jyy4뷢<_a7_=Q E=S1И/9{+93֮E{ǂw{))?maÆm(uLE#lïZ  ~d];+]h j?!|$F}*"4(v'8s<ŏUkm7^7no1w2ؗ}TrͿEk>p'8OB7d7R(A 9.*Mi^ͳ; eeUwS+C)uO@ =Sy]` }l8^ZzRXj[^iUɺ$tj))<sbDJfg=Pk_{xaKo1:-uyG0M ԃ\0Lvuy'ȱc2Ji AdyVgVh!{]/&}}ċJ#%d !+87<;qN޼Nفl|1N:8ya  8}k¾+-$4FiZYÔXk*I&'@iI99)HSh4+2G:tGhS^繿 Kتm0 вDk}֚+QT4;sC}rՅE,8CX-e~>G&'9xpW,%Fh,Ry56Y–hW-(v_,? ; qrBk4-V7HQ;ˇ^Gv1JVV%,ik;D_W!))+BoS4QsTM;gt+ndS-~:11Sgv!0qRVh!"Ȋ(̦Yl.]PQWgٳE'`%W1{ndΗBk|Ž7ʒR~,lnoa&:ü$ 3<a[CBݮwt"o\ePJ=Hz"_c^Z.#ˆ*x z̝grY]tdkP*:97YľXyBkD4N.C_[;F9`8& !AMO c `@BA& Ost\-\NX+Xp < !bj3C&QL+*&kAQ=04}cC!9~820G'PC9xa!w&bo_1 Sw"ܱ V )Yl3+ס2KoXOx]"`^WOy :3GO0g;%Yv㐫(R/r (s } u B &FeYZh0y> =2<Ϟc/ -u= c&׭,.0"g"7 6T!vl#sc>{u/Oh Bᾈ)۴74]x7 gMӒ"d]U)}" v4co[ ɡs 5Gg=XR14?5A}D "b{0$L .\4y{_fe:kVS\\O]c^W52LSBDM! C3Dhr̦RtArx4&agaN3Cf<Ԉp4~ B'"1@.b_/xQ} _߃҉/gٓ2Qkqp0շpZ2fԫYz< 4L.Cyυι1t@鎫Fe sYfsF}^ V}N<_`p)alٶ "(XEAVZ<)2},:Ir*#m_YӼ R%a||EƼIJ,,+f"96r/}0jE/)s)cjW#w'Sʯ5<66lj$a~3Kʛy 2:cZ:Yh))+a߭K::N,Q F'qB]={.]h85C9cr=}*rk?vwV렵ٸW Rs%}rNAkDv|uFLBkWY YkX מ|)1!$#3%y?pF<@<Rr0}: }\J [5FRxY<9"SQdE(Q*Qʻ)q1E0B_O24[U'],lOb ]~WjHޏTQ5Syu wq)xnw8~)c 쫬gٲߠ H% k5dƝk> kEj,0% b"vi2Wس_CuK)K{n|>t{P1򨾜j>'kEkƗBg*H%'_aY6Bn!TL&ɌOb{c`'d^{t\i^[uɐ[}q0lM˕G:‚4kb祔c^:?bpg… +37stH:0}en6x˟%/<]BL&* 5&fK9Mq)/iyqtA%kUe[ڛKN]Ě^,"`/ s[EQQm?|XJ߅92m]G.E΃ח U*Cn.j_)Tѧj̿30ڇ!A0=͜ar I3$C^-9#|pk!)?7.x9 @OO;WƝZBFU keZ75F6Tc6"ZȚs2y/1 ʵ:u4xa`C>6Rb/Yм)^=+~uRd`/|_8xbB0?Ft||Z\##|K 0>>zxv8۴吅q 8ĥ)"6>~\8:qM}#͚'ĉ#p\׶ l#bA?)|g g9|8jP(cr,BwV (WliVxxᡁ@0Okn;ɥh$_ckCgriv}>=wGzβ KkBɛ[˪ !J)h&k2%07δt}!d<9;I&0wV/ v 0<H}L&8ob%Hi|޶o&h1L|u֦y~󛱢8fٲUsւ)0oiFx2}X[zVYr_;N(w]_4B@OanC?gĦx>мgx>ΛToZoOMp>40>V Oy V9iq!4 LN,ˢu{jsz]|"R޻&'ƚ{53ўFu(<٪9:΋]B;)B>1::8;~)Yt|0(pw2N%&X,URBK)3\zz&}ax4;ǟ(tLNg{N|Ǽ\G#C9g$^\}p?556]/RP.90 k,U8/u776s ʪ_01چ|\N 0VV*3H鴃J7iI!wG_^ypl}r*jɤSR 5QN@ iZ#1ٰy;_\3\BQQ x:WJv츟ٯ$"@6 S#qe딇(/P( Dy~TOϻ<4:-+F`0||;Xl-"uw$Цi󼕝mKʩorz"mϺ$F:~E'ҐvD\y?Rr8_He@ e~O,T.(ފR*cY^m|cVR[8 JҡSm!ΆԨb)RHG{?MpqrmN>߶Y)\p,d#xۆWY*,l6]v0h15M˙MS8+EdI='LBJIH7_9{Caз*Lq,dt >+~ّeʏ?xԕ4bBAŚjﵫ!'\Ը$WNvKO}ӽmSşذqsOy?\[,d@'73'j%kOe`1.g2"e =YIzS2|zŐƄa\U,dP;jhhhaxǶ?КZ՚.q SE+XrbOu%\GتX(H,N^~]JyEZQKceTQ]VGYqnah;y$cQahT&QPZ*iZ8UQQM.qo/T\7X"u?Mttl2Xq(IoW{R^ ux*SYJ! 4S.Jy~ BROS[V|žKNɛP(L6V^|cR7i7nZW1Fd@ Ara{詑|(T*dN]Ko?s=@ |_EvF]׍kR)eBJc" MUUbY6`~V޴dJKß&~'d3i WWWWWW
Current Directory: /opt/cpanel/ea-ruby24/root/usr/share/gems/doc/sqlite3-1.4.2/rdoc/SQLite3
Viewing File: /opt/cpanel/ea-ruby24/root/usr/share/gems/doc/sqlite3-1.4.2/rdoc/SQLite3/Statement.html
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>class SQLite3::Statement - sqlite3-1.4.2 Documentation</title> <script type="text/javascript"> var rdoc_rel_prefix = "../"; var index_rel_prefix = "../"; </script> <script src="../js/navigation.js" defer></script> <script src="../js/search.js" defer></script> <script src="../js/search_index.js" defer></script> <script src="../js/searcher.js" defer></script> <script src="../js/darkfish.js" defer></script> <link href="../css/fonts.css" rel="stylesheet"> <link href="../css/rdoc.css" rel="stylesheet"> <body id="top" role="document" class="class"> <nav role="navigation"> <div id="project-navigation"> <div id="home-section" role="region" title="Quick navigation" class="nav-section"> <h2> <a href="../index.html" rel="home">Home</a> </h2> <div id="table-of-contents-navigation"> <a href="../table_of_contents.html#pages">Pages</a> <a href="../table_of_contents.html#classes">Classes</a> <a href="../table_of_contents.html#methods">Methods</a> </div> </div> <div id="search-section" role="search" class="project-section initially-hidden"> <form action="#" method="get" accept-charset="utf-8"> <div id="search-field-wrapper"> <input id="search-field" role="combobox" aria-label="Search" aria-autocomplete="list" aria-controls="search-results" type="text" name="search" placeholder="Search" spellcheck="false" title="Type to search, Up and Down to navigate, Enter to load"> </div> <ul id="search-results" aria-label="Search Results" aria-busy="false" aria-expanded="false" aria-atomic="false" class="initially-hidden"></ul> </form> </div> </div> <div id="class-metadata"> <div id="parent-class-section" class="nav-section"> <h3>Parent</h3> <p class="link"><a href="../Object.html">Object</a> </div> <div id="includes-section" class="nav-section"> <h3>Included Modules</h3> <ul class="link-list"> <li><span class="include">Enumerable</span> </ul> </div> <!-- Method Quickref --> <div id="method-list-section" class="nav-section"> <h3>Methods</h3> <ul class="link-list" role="directory"> <li ><a href="#method-c-new">::new</a> <li ><a href="#method-i-active-3F">#active?</a> <li ><a href="#method-i-bind_param">#bind_param</a> <li ><a href="#method-i-bind_parameter_count">#bind_parameter_count</a> <li ><a href="#method-i-bind_params">#bind_params</a> <li ><a href="#method-i-clear_bindings-21">#clear_bindings!</a> <li ><a href="#method-i-close">#close</a> <li ><a href="#method-i-closed-3F">#closed?</a> <li ><a href="#method-i-column_count">#column_count</a> <li ><a href="#method-i-column_decltype">#column_decltype</a> <li ><a href="#method-i-column_name">#column_name</a> <li ><a href="#method-i-columns">#columns</a> <li ><a href="#method-i-database_name">#database_name</a> <li ><a href="#method-i-done-3F">#done?</a> <li ><a href="#method-i-each">#each</a> <li ><a href="#method-i-execute">#execute</a> <li ><a href="#method-i-execute-21">#execute!</a> <li ><a href="#method-i-get_metadata">#get_metadata</a> <li ><a href="#method-i-reset-21">#reset!</a> <li ><a href="#method-i-step">#step</a> <li ><a href="#method-i-types">#types</a> </ul> </div> </div> </nav> <main role="main" aria-labelledby="class-SQLite3::Statement"> <h1 id="class-SQLite3::Statement" class="class"> class SQLite3::Statement </h1> <section class="description"> <p>A statement represents a prepared-but-unexecuted SQL query. It will rarely (if ever) be instantiated directly by a client, and is most often obtained via the <a href="Database.html#method-i-prepare">SQLite3::Database#prepare</a> method.</p> </section> <section id="5Buntitled-5D" class="documentation-section"> <section class="attribute-method-details" class="method-section"> <header> <h3>Attributes</h3> </header> <div id="attribute-i-remainder" class="method-detail"> <div class="method-heading attribute-method-heading"> <span class="method-name">remainder</span><span class="attribute-access-type">[R]</span> </div> <div class="method-description"> <p>This is any text that followed the first valid SQL statement in the text with which the statement was initialized. If there was no trailing text, this will be the empty string.</p> </div> </div> </section> <section id="public-class-5Buntitled-5D-method-details" class="method-section"> <header> <h3>Public Class Methods</h3> </header> <div id="method-c-new" class="method-detail "> <div class="method-heading"> <span class="method-callseq"> SQLite3::Statement.new(db, sql) </span> <span class="method-click-advice">click to toggle source</span> </div> <div class="method-description"> <p>Create a new statement attached to the given <a href="Database.html">Database</a> instance, and which encapsulates the given SQL text. If the text contains more than one statement (i.e., separated by semicolons), then the <a href="Statement.html#attribute-i-remainder">remainder</a> property will be set to the trailing text.</p> <div class="method-source-code" id="new-source"> <pre>static VALUE initialize(VALUE self, VALUE db, VALUE sql) { sqlite3RubyPtr db_ctx; sqlite3StmtRubyPtr ctx; const char *tail = NULL; int status; StringValue(sql); Data_Get_Struct(db, sqlite3Ruby, db_ctx); Data_Get_Struct(self, sqlite3StmtRuby, ctx); if(!db_ctx-&gt;db) rb_raise(rb_eArgError, &quot;prepare called on a closed database&quot;); if(!UTF8_P(sql)) { sql = rb_str_export_to_enc(sql, rb_utf8_encoding()); } #ifdef HAVE_SQLITE3_PREPARE_V2 status = sqlite3_prepare_v2( #else status = sqlite3_prepare( #endif db_ctx-&gt;db, (const char *)StringValuePtr(sql), (int)RSTRING_LEN(sql), &amp;ctx-&gt;st, &amp;tail ); CHECK(db_ctx-&gt;db, status); rb_iv_set(self, &quot;@connection&quot;, db); rb_iv_set(self, &quot;@remainder&quot;, rb_str_new2(tail)); rb_iv_set(self, &quot;@columns&quot;, Qnil); rb_iv_set(self, &quot;@types&quot;, Qnil); return self; }</pre> </div> </div> </div> </section> <section id="public-instance-5Buntitled-5D-method-details" class="method-section"> <header> <h3>Public Instance Methods</h3> </header> <div id="method-i-active-3F" class="method-detail "> <div class="method-heading"> <span class="method-name">active?</span><span class="method-args">()</span> <span class="method-click-advice">click to toggle source</span> </div> <div class="method-description"> <p>Returns true if the statement is currently active, meaning it has an open result set.</p> <div class="method-source-code" id="active-3F-source"> <pre><span class="ruby-comment"># File lib/sqlite3/statement.rb, line 94</span> <span class="ruby-keyword">def</span> <span class="ruby-identifier">active?</span> <span class="ruby-operator">!</span><span class="ruby-identifier">done?</span> <span class="ruby-keyword">end</span></pre> </div> </div> </div> <div id="method-i-bind_param" class="method-detail "> <div class="method-heading"> <span class="method-callseq"> bind_param(key, value) </span> <span class="method-click-advice">click to toggle source</span> </div> <div class="method-description"> <p>Binds value to the named (or positional) placeholder. If <code>param</code> is a Fixnum, it is treated as an index for a positional placeholder. Otherwise it is used as the name of the placeholder to bind to.</p> <p>See also <a href="Statement.html#method-i-bind_params">bind_params</a>.</p> <div class="method-source-code" id="bind_param-source"> <pre>static VALUE bind_param(VALUE self, VALUE key, VALUE value) { sqlite3StmtRubyPtr ctx; int status; int index; Data_Get_Struct(self, sqlite3StmtRuby, ctx); REQUIRE_OPEN_STMT(ctx); switch(TYPE(key)) { case T_SYMBOL: key = rb_funcall(key, rb_intern(&quot;to_s&quot;), 0); case T_STRING: if(RSTRING_PTR(key)[0] != &#39;:&#39;) key = rb_str_plus(rb_str_new2(&quot;:&quot;), key); index = sqlite3_bind_parameter_index(ctx-&gt;st, StringValuePtr(key)); break; default: index = (int)NUM2INT(key); } if(index == 0) rb_raise(rb_path2class(&quot;SQLite3::Exception&quot;), &quot;no such bind parameter&quot;); switch(TYPE(value)) { case T_STRING: if(CLASS_OF(value) == cSqlite3Blob || rb_enc_get_index(value) == rb_ascii8bit_encindex() ) { status = sqlite3_bind_blob( ctx-&gt;st, index, (const char *)StringValuePtr(value), (int)RSTRING_LEN(value), SQLITE_TRANSIENT ); } else { if (UTF16_LE_P(value) || UTF16_BE_P(value)) { status = sqlite3_bind_text16( ctx-&gt;st, index, (const char *)StringValuePtr(value), (int)RSTRING_LEN(value), SQLITE_TRANSIENT ); } else { if (!UTF8_P(value) || !USASCII_P(value)) { value = rb_str_encode(value, rb_enc_from_encoding(rb_utf8_encoding()), 0, Qnil); } status = sqlite3_bind_text( ctx-&gt;st, index, (const char *)StringValuePtr(value), (int)RSTRING_LEN(value), SQLITE_TRANSIENT ); } } break; case T_BIGNUM: { sqlite3_int64 num64; if (bignum_to_int64(value, &amp;num64)) { status = sqlite3_bind_int64(ctx-&gt;st, index, num64); break; } } case T_FLOAT: status = sqlite3_bind_double(ctx-&gt;st, index, NUM2DBL(value)); break; case T_FIXNUM: status = sqlite3_bind_int64(ctx-&gt;st, index, (sqlite3_int64)FIX2LONG(value)); break; case T_NIL: status = sqlite3_bind_null(ctx-&gt;st, index); break; default: rb_raise(rb_eRuntimeError, &quot;can&#39;t prepare %s&quot;, rb_class2name(CLASS_OF(value))); break; } CHECK(sqlite3_db_handle(ctx-&gt;st), status); return self; }</pre> </div> </div> </div> <div id="method-i-bind_parameter_count" class="method-detail "> <div class="method-heading"> <span class="method-callseq"> bind_parameter_count </span> <span class="method-click-advice">click to toggle source</span> </div> <div class="method-description"> <p>Return the number of bind parameters</p> <div class="method-source-code" id="bind_parameter_count-source"> <pre>static VALUE bind_parameter_count(VALUE self) { sqlite3StmtRubyPtr ctx; Data_Get_Struct(self, sqlite3StmtRuby, ctx); REQUIRE_OPEN_STMT(ctx); return INT2NUM((long)sqlite3_bind_parameter_count(ctx-&gt;st)); }</pre> </div> </div> </div> <div id="method-i-bind_params" class="method-detail "> <div class="method-heading"> <span class="method-name">bind_params</span><span class="method-args">( *bind_vars )</span> <span class="method-click-advice">click to toggle source</span> </div> <div class="method-description"> <p>Binds the given variables to the corresponding placeholders in the SQL text.</p> <p>See <a href="Database.html#method-i-execute">SQLite3::Database#execute</a> for a description of the valid placeholder syntaxes.</p> <p>Example:</p> <pre class="ruby"><span class="ruby-identifier">stmt</span> = <span class="ruby-identifier">db</span>.<span class="ruby-identifier">prepare</span>( <span class="ruby-string">&quot;select * from table where a=? and b=?&quot;</span> ) <span class="ruby-identifier">stmt</span>.<span class="ruby-identifier">bind_params</span>( <span class="ruby-value">15</span>, <span class="ruby-string">&quot;hello&quot;</span> ) </pre> <p>See also <a href="Statement.html#method-i-execute">execute</a>, <a href="Statement.html#method-i-bind_param">bind_param</a>, <a href="Statement.html#method-i-bind_param">#bind_param</a>, and <a href="Statement.html#method-i-bind_params">#bind_params</a>.</p> <div class="method-source-code" id="bind_params-source"> <pre><span class="ruby-comment"># File lib/sqlite3/statement.rb, line 35</span> <span class="ruby-keyword">def</span> <span class="ruby-identifier">bind_params</span>( <span class="ruby-operator">*</span><span class="ruby-identifier">bind_vars</span> ) <span class="ruby-identifier">index</span> = <span class="ruby-value">1</span> <span class="ruby-identifier">bind_vars</span>.<span class="ruby-identifier">flatten</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">var</span><span class="ruby-operator">|</span> <span class="ruby-keyword">if</span> <span class="ruby-constant">Hash</span> <span class="ruby-operator">===</span> <span class="ruby-identifier">var</span> <span class="ruby-identifier">var</span>.<span class="ruby-identifier">each</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">key</span>, <span class="ruby-identifier">val</span><span class="ruby-operator">|</span> <span class="ruby-identifier">bind_param</span> <span class="ruby-identifier">key</span>, <span class="ruby-identifier">val</span> } <span class="ruby-keyword">else</span> <span class="ruby-identifier">bind_param</span> <span class="ruby-identifier">index</span>, <span class="ruby-identifier">var</span> <span class="ruby-identifier">index</span> <span class="ruby-operator">+=</span> <span class="ruby-value">1</span> <span class="ruby-keyword">end</span> <span class="ruby-keyword">end</span> <span class="ruby-keyword">end</span></pre> </div> </div> </div> <div id="method-i-clear_bindings-21" class="method-detail "> <div class="method-heading"> <span class="method-callseq"> clear_bindings! </span> <span class="method-click-advice">click to toggle source</span> </div> <div class="method-description"> <p>Resets the statement. This is typically done internally, though it might occassionally be necessary to manually reset the statement.</p> <div class="method-source-code" id="clear_bindings-21-source"> <pre>static VALUE clear_bindings_bang(VALUE self) { sqlite3StmtRubyPtr ctx; Data_Get_Struct(self, sqlite3StmtRuby, ctx); REQUIRE_OPEN_STMT(ctx); sqlite3_clear_bindings(ctx-&gt;st); ctx-&gt;done_p = 0; return self; }</pre> </div> </div> </div> <div id="method-i-close" class="method-detail "> <div class="method-heading"> <span class="method-callseq"> close </span> <span class="method-click-advice">click to toggle source</span> </div> <div class="method-description"> <p>Closes the statement by finalizing the underlying statement handle. The statement must not be used after being closed.</p> <div class="method-source-code" id="close-source"> <pre>static VALUE sqlite3_rb_close(VALUE self) { sqlite3StmtRubyPtr ctx; Data_Get_Struct(self, sqlite3StmtRuby, ctx); REQUIRE_OPEN_STMT(ctx); sqlite3_finalize(ctx-&gt;st); ctx-&gt;st = NULL; return self; }</pre> </div> </div> </div> <div id="method-i-closed-3F" class="method-detail "> <div class="method-heading"> <span class="method-callseq"> closed? </span> <span class="method-click-advice">click to toggle source</span> </div> <div class="method-description"> <p>Returns true if the statement has been closed.</p> <div class="method-source-code" id="closed-3F-source"> <pre>static VALUE closed_p(VALUE self) { sqlite3StmtRubyPtr ctx; Data_Get_Struct(self, sqlite3StmtRuby, ctx); if(!ctx-&gt;st) return Qtrue; return Qfalse; }</pre> </div> </div> </div> <div id="method-i-column_count" class="method-detail "> <div class="method-heading"> <span class="method-callseq"> column_count </span> <span class="method-click-advice">click to toggle source</span> </div> <div class="method-description"> <p>Returns the number of columns to be returned for this statement</p> <div class="method-source-code" id="column_count-source"> <pre>static VALUE column_count(VALUE self) { sqlite3StmtRubyPtr ctx; Data_Get_Struct(self, sqlite3StmtRuby, ctx); REQUIRE_OPEN_STMT(ctx); return INT2NUM((long)sqlite3_column_count(ctx-&gt;st)); }</pre> </div> </div> </div> <div id="method-i-column_decltype" class="method-detail "> <div class="method-heading"> <span class="method-callseq"> column_decltype(index) </span> <span class="method-click-advice">click to toggle source</span> </div> <div class="method-description"> <p>Get the column type at <code>index</code>. 0 based.</p> <div class="method-source-code" id="column_decltype-source"> <pre>static VALUE column_decltype(VALUE self, VALUE index) { sqlite3StmtRubyPtr ctx; const char * name; Data_Get_Struct(self, sqlite3StmtRuby, ctx); REQUIRE_OPEN_STMT(ctx); name = sqlite3_column_decltype(ctx-&gt;st, (int)NUM2INT(index)); if(name) return rb_str_new2(name); return Qnil; }</pre> </div> </div> </div> <div id="method-i-column_name" class="method-detail "> <div class="method-heading"> <span class="method-callseq"> column_name(index) </span> <span class="method-click-advice">click to toggle source</span> </div> <div class="method-description"> <p>Get the column name at <code>index</code>. 0 based.</p> <div class="method-source-code" id="column_name-source"> <pre>static VALUE column_name(VALUE self, VALUE index) { sqlite3StmtRubyPtr ctx; const char * name; Data_Get_Struct(self, sqlite3StmtRuby, ctx); REQUIRE_OPEN_STMT(ctx); name = sqlite3_column_name(ctx-&gt;st, (int)NUM2INT(index)); if(name) return SQLITE3_UTF8_STR_NEW2(name); return Qnil; }</pre> </div> </div> </div> <div id="method-i-columns" class="method-detail "> <div class="method-heading"> <span class="method-name">columns</span><span class="method-args">()</span> <span class="method-click-advice">click to toggle source</span> </div> <div class="method-description"> <p>Return an array of the column names for this statement. Note that this may execute the statement in order to obtain the metadata; this makes it a (potentially) expensive operation.</p> <div class="method-source-code" id="columns-source"> <pre><span class="ruby-comment"># File lib/sqlite3/statement.rb, line 101</span> <span class="ruby-keyword">def</span> <span class="ruby-identifier">columns</span> <span class="ruby-identifier">get_metadata</span> <span class="ruby-keyword">unless</span> <span class="ruby-ivar">@columns</span> <span class="ruby-keyword">return</span> <span class="ruby-ivar">@columns</span> <span class="ruby-keyword">end</span></pre> </div> </div> </div> <div id="method-i-database_name" class="method-detail "> <div class="method-heading"> <span class="method-callseq"> database_name(column_index) </span> <span class="method-click-advice">click to toggle source</span> </div> <div class="method-description"> <p>Return the database name for the column at <code>column_index</code></p> <div class="method-source-code" id="database_name-source"> <pre>static VALUE database_name(VALUE self, VALUE index) { sqlite3StmtRubyPtr ctx; Data_Get_Struct(self, sqlite3StmtRuby, ctx); REQUIRE_OPEN_STMT(ctx); return SQLITE3_UTF8_STR_NEW2( sqlite3_column_database_name(ctx-&gt;st, NUM2INT(index))); }</pre> </div> </div> </div> <div id="method-i-done-3F" class="method-detail "> <div class="method-heading"> <span class="method-callseq"> done? </span> <span class="method-click-advice">click to toggle source</span> </div> <div class="method-description"> <p>returns true if all rows have been returned.</p> <div class="method-source-code" id="done-3F-source"> <pre>static VALUE done_p(VALUE self) { sqlite3StmtRubyPtr ctx; Data_Get_Struct(self, sqlite3StmtRuby, ctx); if(ctx-&gt;done_p) return Qtrue; return Qfalse; }</pre> </div> </div> </div> <div id="method-i-each" class="method-detail "> <div class="method-heading"> <span class="method-name">each</span><span class="method-args">() { |val| ... }</span> <span class="method-click-advice">click to toggle source</span> </div> <div class="method-description"> <div class="method-source-code" id="each-source"> <pre><span class="ruby-comment"># File lib/sqlite3/statement.rb, line 106</span> <span class="ruby-keyword">def</span> <span class="ruby-identifier">each</span> <span class="ruby-identifier">loop</span> <span class="ruby-keyword">do</span> <span class="ruby-identifier">val</span> = <span class="ruby-identifier">step</span> <span class="ruby-keyword">break</span> <span class="ruby-keyword">self</span> <span class="ruby-keyword">if</span> <span class="ruby-identifier">done?</span> <span class="ruby-keyword">yield</span> <span class="ruby-identifier">val</span> <span class="ruby-keyword">end</span> <span class="ruby-keyword">end</span></pre> </div> </div> </div> <div id="method-i-execute" class="method-detail "> <div class="method-heading"> <span class="method-name">execute</span><span class="method-args">( *bind_vars ) { |results| ... }</span> <span class="method-click-advice">click to toggle source</span> </div> <div class="method-description"> <p>Execute the statement. This creates a new <a href="ResultSet.html">ResultSet</a> object for the statement&#39;s virtual machine. If a block was given, the new <a href="ResultSet.html">ResultSet</a> will be yielded to it; otherwise, the <a href="ResultSet.html">ResultSet</a> will be returned.</p> <p>Any parameters will be bound to the statement using <a href="Statement.html#method-i-bind_params">bind_params</a>.</p> <p>Example:</p> <pre>stmt = db.prepare( &quot;select * from table&quot; ) stmt.execute do |result| ... end</pre> <p>See also <a href="Statement.html#method-i-bind_params">bind_params</a>, <a href="Statement.html#method-i-execute-21">execute!</a>.</p> <div class="method-source-code" id="execute-source"> <pre><span class="ruby-comment"># File lib/sqlite3/statement.rb, line 61</span> <span class="ruby-keyword">def</span> <span class="ruby-identifier">execute</span>( <span class="ruby-operator">*</span><span class="ruby-identifier">bind_vars</span> ) <span class="ruby-identifier">reset!</span> <span class="ruby-keyword">if</span> <span class="ruby-identifier">active?</span> <span class="ruby-operator">||</span> <span class="ruby-identifier">done?</span> <span class="ruby-identifier">bind_params</span>(<span class="ruby-operator">*</span><span class="ruby-identifier">bind_vars</span>) <span class="ruby-keyword">unless</span> <span class="ruby-identifier">bind_vars</span>.<span class="ruby-identifier">empty?</span> <span class="ruby-ivar">@results</span> = <span class="ruby-constant">ResultSet</span>.<span class="ruby-identifier">new</span>(<span class="ruby-ivar">@connection</span>, <span class="ruby-keyword">self</span>) <span class="ruby-identifier">step</span> <span class="ruby-keyword">if</span> <span class="ruby-value">0</span> <span class="ruby-operator">==</span> <span class="ruby-identifier">column_count</span> <span class="ruby-keyword">yield</span> <span class="ruby-ivar">@results</span> <span class="ruby-keyword">if</span> <span class="ruby-identifier">block_given?</span> <span class="ruby-ivar">@results</span> <span class="ruby-keyword">end</span></pre> </div> </div> </div> <div id="method-i-execute-21" class="method-detail "> <div class="method-heading"> <span class="method-name">execute!</span><span class="method-args">( *bind_vars, &block )</span> <span class="method-click-advice">click to toggle source</span> </div> <div class="method-description"> <p>Execute the statement. If no block was given, this returns an array of rows returned by executing the statement. Otherwise, each row will be yielded to the block.</p> <p>Any parameters will be bound to the statement using <a href="Statement.html#method-i-bind_params">bind_params</a>.</p> <p>Example:</p> <pre>stmt = db.prepare( &quot;select * from table&quot; ) stmt.execute! do |row| ... end</pre> <p>See also <a href="Statement.html#method-i-bind_params">bind_params</a>, <a href="Statement.html#method-i-execute">execute</a>.</p> <div class="method-source-code" id="execute-21-source"> <pre><span class="ruby-comment"># File lib/sqlite3/statement.rb, line 87</span> <span class="ruby-keyword">def</span> <span class="ruby-identifier">execute!</span>( <span class="ruby-operator">*</span><span class="ruby-identifier">bind_vars</span>, <span class="ruby-operator">&amp;</span><span class="ruby-identifier">block</span> ) <span class="ruby-identifier">execute</span>(<span class="ruby-operator">*</span><span class="ruby-identifier">bind_vars</span>) <span class="ruby-identifier">block_given?</span> <span class="ruby-operator">?</span> <span class="ruby-identifier">each</span>(<span class="ruby-operator">&amp;</span><span class="ruby-identifier">block</span>) <span class="ruby-operator">:</span> <span class="ruby-identifier">to_a</span> <span class="ruby-keyword">end</span></pre> </div> </div> </div> <div id="method-i-reset-21" class="method-detail "> <div class="method-heading"> <span class="method-callseq"> reset! </span> <span class="method-click-advice">click to toggle source</span> </div> <div class="method-description"> <p>Resets the statement. This is typically done internally, though it might occassionally be necessary to manually reset the statement.</p> <div class="method-source-code" id="reset-21-source"> <pre>static VALUE reset_bang(VALUE self) { sqlite3StmtRubyPtr ctx; Data_Get_Struct(self, sqlite3StmtRuby, ctx); REQUIRE_OPEN_STMT(ctx); sqlite3_reset(ctx-&gt;st); ctx-&gt;done_p = 0; return self; }</pre> </div> </div> </div> <div id="method-i-step" class="method-detail "> <div class="method-heading"> <span class="method-name">step</span><span class="method-args">()</span> <span class="method-click-advice">click to toggle source</span> </div> <div class="method-description"> <div class="method-source-code" id="step-source"> <pre>static VALUE step(VALUE self) { sqlite3StmtRubyPtr ctx; sqlite3_stmt *stmt; int value, length; VALUE list; rb_encoding * internal_encoding; Data_Get_Struct(self, sqlite3StmtRuby, ctx); REQUIRE_OPEN_STMT(ctx); if(ctx-&gt;done_p) return Qnil; { VALUE db = rb_iv_get(self, &quot;@connection&quot;); rb_funcall(db, rb_intern(&quot;encoding&quot;), 0); internal_encoding = rb_default_internal_encoding(); } stmt = ctx-&gt;st; value = sqlite3_step(stmt); if (rb_errinfo() != Qnil) { /* some user defined function was invoked as a callback during step and * it raised an exception that has been suppressed until step returns. * Now re-raise it. */ VALUE exception = rb_errinfo(); rb_set_errinfo(Qnil); rb_exc_raise(exception); } length = sqlite3_column_count(stmt); list = rb_ary_new2((long)length); switch(value) { case SQLITE_ROW: { int i; for(i = 0; i &lt; length; i++) { switch(sqlite3_column_type(stmt, i)) { case SQLITE_INTEGER: rb_ary_push(list, LL2NUM(sqlite3_column_int64(stmt, i))); break; case SQLITE_FLOAT: rb_ary_push(list, rb_float_new(sqlite3_column_double(stmt, i))); break; case SQLITE_TEXT: { VALUE str = rb_str_new( (const char *)sqlite3_column_text(stmt, i), (long)sqlite3_column_bytes(stmt, i) ); rb_enc_associate_index(str, rb_utf8_encindex()); if(internal_encoding) str = rb_str_export_to_enc(str, internal_encoding); rb_ary_push(list, str); } break; case SQLITE_BLOB: { VALUE str = rb_str_new( (const char *)sqlite3_column_blob(stmt, i), (long)sqlite3_column_bytes(stmt, i) ); rb_ary_push(list, str); } break; case SQLITE_NULL: rb_ary_push(list, Qnil); break; default: rb_raise(rb_eRuntimeError, &quot;bad type&quot;); } } } break; case SQLITE_DONE: ctx-&gt;done_p = 1; return Qnil; break; default: sqlite3_reset(stmt); ctx-&gt;done_p = 0; CHECK(sqlite3_db_handle(ctx-&gt;st), value); } return list; }</pre> </div> </div> </div> <div id="method-i-types" class="method-detail "> <div class="method-heading"> <span class="method-name">types</span><span class="method-args">()</span> <span class="method-click-advice">click to toggle source</span> </div> <div class="method-description"> <p>Return an array of the data types for each column in this statement. Note that this may execute the statement in order to obtain the metadata; this makes it a (potentially) expensive operation.</p> <div class="method-source-code" id="types-source"> <pre><span class="ruby-comment"># File lib/sqlite3/statement.rb, line 117</span> <span class="ruby-keyword">def</span> <span class="ruby-identifier">types</span> <span class="ruby-identifier">must_be_open!</span> <span class="ruby-identifier">get_metadata</span> <span class="ruby-keyword">unless</span> <span class="ruby-ivar">@types</span> <span class="ruby-ivar">@types</span> <span class="ruby-keyword">end</span></pre> </div> </div> </div> </section> <section id="private-instance-5Buntitled-5D-method-details" class="method-section"> <header> <h3>Private Instance Methods</h3> </header> <div id="method-i-get_metadata" class="method-detail "> <div class="method-heading"> <span class="method-name">get_metadata</span><span class="method-args">()</span> <span class="method-click-advice">click to toggle source</span> </div> <div class="method-description"> <p>A convenience method for obtaining the metadata about the query. Note that this will actually execute the SQL, which means it can be a (potentially) expensive operation.</p> <div class="method-source-code" id="get_metadata-source"> <pre><span class="ruby-comment"># File lib/sqlite3/statement.rb, line 135</span> <span class="ruby-keyword">def</span> <span class="ruby-identifier">get_metadata</span> <span class="ruby-ivar">@columns</span> = <span class="ruby-constant">Array</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">column_count</span>) <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">column</span><span class="ruby-operator">|</span> <span class="ruby-identifier">column_name</span> <span class="ruby-identifier">column</span> <span class="ruby-keyword">end</span> <span class="ruby-ivar">@types</span> = <span class="ruby-constant">Array</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">column_count</span>) <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">column</span><span class="ruby-operator">|</span> <span class="ruby-identifier">column_decltype</span> <span class="ruby-identifier">column</span> <span class="ruby-keyword">end</span> <span class="ruby-keyword">end</span></pre> </div> </div> </div> </section> </section> </main> <footer id="validator-badges" role="contentinfo"> <p><a href="http://validator.w3.org/check/referer">Validate</a> <p>Generated by <a href="https://rdoc.github.io/rdoc">RDoc</a> 5.0.1. <p>Based on <a href="http://deveiate.org/projects/Darkfish-RDoc/">Darkfish</a> by <a href="http://deveiate.org">Michael Granger</a>. </footer>