Rdbms.lua
上传用户:cccombo
上传日期:2021-01-31
资源大小:16445k
文件大小:5k
源码类别:

MySQL数据库

开发平台:

SQL

  1. -- ----------------------------------------------------------------------------------------
  2. -- Copyright (C) 2004 MySQL AB
  3. --
  4. -- This program is free software; you can redistribute it and/or modify
  5. -- it under the terms of the GNU General Public License as published by
  6. -- the Free Software Foundation; either version 2 of the License, or
  7. -- (at your option) any later version.
  8. --
  9. -- This program is distributed in the hope that it will be useful,
  10. -- but WITHOUT ANY WARRANTY; without even the implied warranty of
  11. -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  12. -- GNU General Public License for more details.
  13. --
  14. -- You should have received a copy of the GNU General Public License
  15. -- along with this program; if not, write to the Free Software
  16. -- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  17. -- ----------------------------------------------------------------------------------------
  18. -- ----------------------------------------------------------------------------------------
  19. -- @file BaseLua.lua
  20. -- @brief Module that contains base functionality for Lua
  21. -- ----------------------------------------------------------------------------------------
  22. -- ----------------------------------------------------------------------------------------
  23. -- @brief Returns the information about this module
  24. --
  25. --   Every Grt module has to implement this function to return information about the 
  26. -- module. Note that new functions that should be exposed to the Grt have to be listed 
  27. -- here. Function that are not exposed should start with a underscore.
  28. --
  29. -- @return A dict that contains the name and the function names of the module
  30. -- ----------------------------------------------------------------------------------------
  31. function getModuleInfo()
  32.   local moduleInfo= 
  33.     {
  34.       name= 'Rdbms', 
  35.       functions= {
  36.         'connect::',
  37.         'close::'
  38.       }, 
  39.       extends= ''
  40.     }
  41.   return moduleInfo
  42. end
  43. -- ----------------------------------------------------------------------------------------
  44. -- @brief Opens a connection to a database
  45. --
  46. --   Opens a connection to a database
  47. --
  48. -- @return the connection object
  49. -- ----------------------------------------------------------------------------------------
  50. function connect(args)
  51.   local conn
  52.   local connGlobalString= ""
  53.   
  54.   if grtV.getn(args) == 1 then
  55.     if type(grtV.toLua(args[1])) == "string" then
  56.       connGlobalString= grtV.toLua(args[1])
  57.       conn= grtV.getGlobal(string.sub(connGlobalString, 9))
  58.     else
  59.       conn= args[1]
  60.     end
  61.   elseif grtV.getn(args) == 3 then
  62.     local name= grtV.toLua(args[1])
  63.     local rdbmsType= grtV.toLua(args[2])
  64.     local params= grtV.toLua(args[3])
  65.     local driver
  66.     
  67.     conn= grtV.newObj("db.mgmt.Connection", name, "", "")
  68.     
  69.     driver= RdbmsManagement:getDefaultDriverByName({rdbmsType})
  70.     if driver == nil then
  71.       return grt.error(string.format(_("There is no rdbms available with the name %s"), rdbmsType))
  72.     end
  73.     
  74.     conn.driver= driver
  75.     conn.modules= grtV.duplicate(conn.driver.defaultModules)
  76.     conn.parameterValues= params
  77.     
  78.     grtV.lookupAdd(conn)
  79.   else
  80.     return grt.error(_("This function takes (db.mgmt.Connection) or " ..
  81.       "(name, rdbmsType, {params}) as parameters."))
  82.   end
  83.   
  84.   -- get query module
  85.   local queryModule= conn.modules.QueryModule
  86.   if queryModule == nil then
  87.     queryModule= conn.driver.defaultModules.QueryModule
  88.   end
  89.   
  90.   if queryModule == nil then
  91.     return grt.error(_("The connection does not have a query module."))
  92.   end
  93.   
  94.   -- call query module function to open the database connection
  95.   if connGlobalString ~= "" then
  96.     conn= grtM.callFunction(grtV.toLua(queryModule), "connOpen", {connGlobalString})
  97.   else
  98.     conn= grtM.callFunction(grtV.toLua(queryModule), "connOpen", {conn})
  99.   end
  100.   
  101.   if grtError ~= nil then
  102.     return grtError
  103.   end
  104.   return grt.success(conn)
  105. end
  106. -- ----------------------------------------------------------------------------------------
  107. -- @brief Closes the connection to a database
  108. --
  109. --   Close the connection to a database
  110. --
  111. -- @return success or error
  112. -- ----------------------------------------------------------------------------------------
  113. function close(args)
  114.   local conn
  115.   
  116.   if grtV.getn(args) == 1 then
  117.     conn= args[1]
  118.   else
  119.     return grt.error(_("This function takes (db.mgmt.Connection) as parameter."))
  120.   end
  121.   -- get query module
  122.   local queryModule= conn.modules.QueryModule
  123.   if queryModule == nil then
  124.     queryModule= conn.driver.defaultModules.QueryModule
  125.   end
  126.   
  127.   if queryModule == nil then
  128.     return grt.error(_("The connection does not have a query module."))
  129.   end
  130.   
  131.   -- call query module function to close the database connection
  132.   conn= grtM.callFunction(grtV.toLua(queryModule), "connClose", {conn})
  133.   if grtError ~= nil then
  134.     return grtError
  135.   end
  136.   
  137.   return grt.success()
  138. end