xref: /netbsd-src/share/examples/lua/sqlite.lua (revision acc324c63c2321907f2c101f7fb451f91248a64d)
1*acc324c6Smbalmer-- $NetBSD: sqlite.lua,v 1.4 2017/05/10 07:37:33 mbalmer Exp $
2250c0b9dSmbalmer
34ab4902eSlnetolocal sqlite = require 'sqlite'
4250c0b9dSmbalmer
5250c0b9dSmbalmerprint(sqlite._VERSION .. ' - ' .. sqlite._DESCRIPTION)
6250c0b9dSmbalmerprint(sqlite._COPYRIGHT)
7250c0b9dSmbalmerprint()
8250c0b9dSmbalmer
9250c0b9dSmbalmerprint('initialize sqlite')
10250c0b9dSmbalmersqlite.initialize()
11250c0b9dSmbalmer
12250c0b9dSmbalmerprint('this is sqlite ' .. sqlite.libversion() .. ' (' ..
13250c0b9dSmbalmer    sqlite.libversion_number() .. ')')
14250c0b9dSmbalmerprint('sourceid ' .. sqlite.sourceid())
15250c0b9dSmbalmer
16*acc324c6Smbalmerdb, state = sqlite.open('/tmp/db.sqlite', sqlite.OPEN_READWRITE |
17*acc324c6Smbalmer    sqlite.OPEN_CREATE)
18250c0b9dSmbalmer
19250c0b9dSmbalmerif state ~= sqlite.OK then
20250c0b9dSmbalmer	print('db open failed')
21250c0b9dSmbalmerelse
22250c0b9dSmbalmer	err = db:exec('create table test (name varchar(32))')
23250c0b9dSmbalmer
24250c0b9dSmbalmer	if err ~= sqlite.OK then
25250c0b9dSmbalmer		print('table creation failed')
26250c0b9dSmbalmer		print('error code ' .. db:errcode() .. ' msg ' .. db:errmsg())
27250c0b9dSmbalmer	end
28250c0b9dSmbalmer
29250c0b9dSmbalmer	db:exec("insert into test values('Balmer')")
30250c0b9dSmbalmer	print('last command changed ' .. db:changes() .. ' rows')
31250c0b9dSmbalmer
32250c0b9dSmbalmer	stmt = db:prepare("insert into test values(:name)")
33250c0b9dSmbalmer
34250c0b9dSmbalmer	print('statement has ' .. stmt:bind_parameter_count() .. ' parameters')
35250c0b9dSmbalmer	print('param 1 name: ' .. stmt:bind_parameter_name(1))
368ad8b067Skamil	print('param name is at index ' .. stmt:bind_parameter_index(':name'))
37250c0b9dSmbalmer
38250c0b9dSmbalmer	stmt:bind(1, 'Hardmeier')
39250c0b9dSmbalmer	stmt:step()
40250c0b9dSmbalmer	stmt:reset()
41250c0b9dSmbalmer	stmt:bind(1, 'Keller')
42250c0b9dSmbalmer	stmt:step()
43250c0b9dSmbalmer	stmt:finalize()
44250c0b9dSmbalmer
45250c0b9dSmbalmer	s2 = db:prepare('select name from test')
46250c0b9dSmbalmer
47250c0b9dSmbalmer	while s2:step() == sqlite.ROW do
48250c0b9dSmbalmer		print('name = ' .. s2:column(1))
49250c0b9dSmbalmer	end
50250c0b9dSmbalmer	s2:finalize()
51250c0b9dSmbalmer
528ad8b067Skamil	stmt = db:prepare('drop table test')
53250c0b9dSmbalmer	stmt:step()
54250c0b9dSmbalmer	stmt:finalize()
55250c0b9dSmbalmer	db:close()
56250c0b9dSmbalmerend
57250c0b9dSmbalmer
58250c0b9dSmbalmerprint('shutdown sqlite')
59250c0b9dSmbalmersqlite.shutdown()
60