comparison src/luan/modules/sql/Sql.luan @ 1407:1979cff9aad2

add sql/Web_query
author Franklin Schmidt <fschmidt@gmail.com>
date Fri, 20 Sep 2019 17:00:30 -0600
parents 8d95711f6615
children
comparison
equal deleted inserted replaced
1406:8187ddb0e827 1407:1979cff9aad2
1 require "java" 1 require "java"
2 local Luan = require "luan:Luan.luan" 2 local Luan = require "luan:Luan.luan"
3 local error = Luan.error 3 local error = Luan.error
4 local new_error = Luan.new_error or error() 4 local new_error = Luan.new_error or error()
5 local set_metatable = Luan.set_metatable or error() 5 local set_metatable = Luan.set_metatable or error()
6 local range = Luan.range or error()
6 local Database = require "java:luan.modules.sql.Database" 7 local Database = require "java:luan.modules.sql.Database"
7 local Logging = require "luan:logging/Logging.luan" 8 local Logging = require "luan:logging/Logging.luan"
8 local logger = Logging.logger "Sql" 9 local logger = Logging.logger "Sql"
9 10
10 11
30 database.update = java_database.update 31 database.update = java_database.update
31 database.set = java_database.set 32 database.set = java_database.set
32 33
33 function database.query(sql,...) 34 function database.query(sql,...)
34 local rs = java_database.query(sql,...) 35 local rs = java_database.query(sql,...)
36 local query = {}
37 query.java = rs
38
35 local mt = {} 39 local mt = {}
36 function mt.__index(_,key) 40 function mt.__index(_,key)
37 local rtn = rs.getObject(key) 41 local rtn = rs.getObject(key)
38 return not rs.wasNull() and rtn or nil 42 return not rs.wasNull() and rtn or nil
39 end 43 end
40 local result = {} 44 local result = {}
41 set_metatable(result,mt) 45 set_metatable(result,mt)
42 return function() 46 function query.results()
43 if rs.isClosed() then 47 if rs.isClosed() then
44 return nil 48 return nil
45 end 49 end
46 if not rs.next() then 50 if not rs.next() then
47 rs.close() 51 rs.close()
48 return nil 52 return nil
49 end 53 end
50 return result 54 return result
51 end, rs 55 end
56
57 function query.column_names()
58 local meta = rs.getMetaData()
59 local names = {}
60 for i in range(1,meta.getColumnCount()) do
61 names[i] = meta.getColumnName(i)
62 end
63 return names
64 end
65
66 return query
52 end 67 end
53 68
54 return database 69 return database
55 end 70 end
56 71