Compare Revisions

Storage

Revision 59184:

Revision 59184 by Brettz9 on

Revision 59185:

Revision 59185 by Boo on

Title:
Storage
Storage
Slug:
Storage
Storage
Tags:
NeedsTechnicalReview, Interfaces, Storage, "Toolkit API", Fixit
NeedsTechnicalReview, Interfaces, Storage, "Toolkit API", Fixit
Content:

Revision 59184
Revision 59185
t209    <h3 name="Executing_a_statement">t
210      Executing a statement
211    </h3>
212    <p>
213      The main way to execute a statement is with <code>mozIStora
>geStatement.executeStep</code>. This function allows you to enume 
>rate all the result rows your statement produces, and will notify 
> you when there are no more results. 
214    </p>209    <p>
210      If you want to use a <code>WHERE</code> clause with a <code
 >>IN ( value-list )</code> expression, Bindings won't work. Constr
 >uct a string instead. If you're not handling user input it's no s
 >afety concern:
215    <p>211    </p>
216      After a call to <code>executeStep</code>, you <b>use the ap
>propriate getter function</b> in <a href="en/MozIStorageValueArra 
>y">mozIStorageValueArray</a> to get the values in a result row (m 
>ozIStorageStatement implements mozIStorageValueArray). The exampl 
>e below only uses <code>getInt32()</code>. 
217    </p>
218    <p>212    <pre>
213var ids = "3,21,72,89";
214var sql = "DELETE FROM table WHERE id IN ( "+ ids +" )";
215 
216== Executing a statement ==
217 
218The main way to execute a statement is with &lt;code&gt;mozIStora
 >geStatement.executeStep&lt;/code&gt;. This function allows you to
 > enumerate all the result rows your statement produces, and will 
 >notify you when there are no more results.
219 
220After a call to &lt;code&gt;executeStep&lt;/code&gt;, you '''use 
 >the appropriate getter function''' in [[mozIStorageValueArray]] t
 >o get the values in a result row (mozIStorageStatement implements
 > mozIStorageValueArray). The example below only uses &lt;code&gt;
 >getInt32()&lt;/code&gt;.
221 
219      You can get the type of a value from <code>mozIStorageValue222You can get the type of a value from &lt;code&gt;mozIStorageValue
>Array.getTypeOfIndex</code>, which returns the type of the specif>Array.getTypeOfIndex&lt;/code&gt;, which returns the type of the 
>ied column. Be careful: sqlite is not a typed database. Any type >specified column. Be careful: sqlite is not a typed database. Any
>can be put into any cell, regardless of the type declared for the> type can be put into any cell, regardless of the type declared f
> column. If you request a different type, sqlite will do its best>or the column. If you request a different type, sqlite will do it
> to convert them, and will do some default value if it is impossi>s best to convert them, and will do some default value if it is i
>ble. Therefore, it is impossible to get type errors, but you may >mpossible. Therefore, it is impossible to get type errors, but yo
>get weird data out.>u may get weird data out.
220    </p>223 
221    <p>
222      C++ code can also use <code>AsInt32</code>, <code>AsDouble<224C++ code can also use &lt;code&gt;AsInt32&lt;/code&gt;, &lt;code&
>/code>, etc. functions which return the value as a more convenien>gt;AsDouble&lt;/code&gt;, etc. functions which return the value a
>t C++ return value. Watch out, though, because you won't get any >s a more convenient C++ return value. Watch out, though, because 
>errors if your index is invalid. Other errors are impossible, bec>you won't get any errors if your index is invalid. Other errors a
>ause sqlite will always convert types, even if they don't make se>re impossible, because sqlite will always convert types, even if 
>nse.>they don't make sense.
223    </p>225 
224    <p>
225      C++ example:226C++ example:
226    </p>227 
227    <pre>228&lt;pre&gt;

Back to History