Advertisement
Guest User

Untitled

a guest
Feb 1st, 2017
182
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. luajava.bindClass('java.lang.Class'):forName('org.postgresql.Driver')
  2. conn = luajava.bindClass('java.sql.DriverManager'):getConnection('jdbc:postgresql://localhost/fran?user=fran&password=fran')
  3. conn:prepareStatement([[
  4.   create temporary table a(k serial primary key, t text);
  5.   insert into a values(42, 'foo');]]):execute();
  6. function list()
  7.   local st = conn:prepareStatement('select * from a')
  8.   local rs = st:executeQuery()
  9.   while rs:next() do
  10.     print(rs:getString(1), rs:getString(2))
  11.   end
  12.   rs:close()
  13.   st:close()
  14. end
  15. upsert = (function()
  16.   local stmtIns = conn:prepareStatement([[insert into a values(?, ?);]])
  17.   local stmtUpd = conn:prepareStatement([[update a set t=? where k=?;]])
  18.   return function(k, t)
  19.     stmtIns:setInt(1, k)
  20.     stmtIns:setString(2, t)
  21.     if not pcall(function() stmtIns:execute() end) then
  22.       stmtUpd:setInt(2, k)
  23.       stmtUpd:setString(1, t)
  24.       stmtUpd:execute()
  25.     end
  26.   end
  27. end)()
  28.  
  29. list()
  30. print('running upsert')
  31. upsert(30, 'bar')
  32. upsert(42, 'pelota')
  33. list()
  34.  
  35. -- ejecución:
  36. --  42      foo
  37. --  running upsert
  38. --  30      bar
  39. --  42      pelota
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement