1 ! Copyright (C) 2005 Chris Double.
3 ! Redistribution and use in source and binary forms, with or without
4 ! modification, are permitted provided that the following conditions are met:
6 ! 1. Redistributions of source code must retain the above copyright notice,
7 ! this list of conditions and the following disclaimer.
9 ! 2. Redistributions in binary form must reproduce the above copyright notice,
10 ! this list of conditions and the following disclaimer in the documentation
11 ! and/or other materials provided with the distribution.
13 ! THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,
14 ! INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
15 ! FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
16 ! DEVELOPERS AND CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
17 ! SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
18 ! PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
19 ! OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
20 ! WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
21 ! OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
22 ! ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
24 ! Test the sqlite interface
26 ! Create a test database like follows:
28 ! sqlite3 test.db < test.txt
36 : test.db "libs/sqlite/test.db" resource-path ;
38 : show-people ( statement -- )
39 dup 0 column-text write " from " write 1 column-text . ;
43 dup "select * from test" sqlite-prepare
44 dup [ show-people ] sqlite-each
48 : find-person ( name -- )
49 test.db sqlite-open ! name db
50 dup "select * from test where name=?" sqlite-prepare ! name db stmt
51 [ rot 1 swap sqlite-bind-text ] keep ! db stmt
52 [ [ 1 column-text . ] sqlite-each ] keep
57 test.db sqlite-open ! db
58 dup "select * from test" sqlite-prepare ! db stmt
59 [ [ [ 0 column-text ] keep 1 column-text curry ] sqlite-map ] keep
65 dup "select * from test" sqlite-prepare