用于获取FreeSWITCH中的ODBC或和核心数据库sqlite的数据库操作句柄,执行sql查询。
该方法的好处是它使用FreeSWITCH提供的数据库连接池,比LuaSQL中为每个env:connect()创建一个单独的tcp连接会快很多。
用法如下:
local dbh = freeswitch.Dbh("dsn","user","pass") -- 当连接ODBC时(已被废弃)-- 或者 --local dbh = freeswitch.Dbh("core:my_db") -- 当连接sqlite (已被废弃, 如果你必须要用这个方法,需要升级FS)-- 或者 --local dbh = freeswitch.Dbh("sqlite://my_db") -- 连接位于freeswitch子目录db中的sqlite数据库-- 或者 --local dbh = freeswitch.Dbh("odbc://my_db:uname:passwd") -- 连接ODBC数据库assert(dbh:connected()) -- 断言,如果数据库连接失败,则退出脚本dbh:test_reactive("SELECT * FROM my_table", "DROP TABLE my_table", "CREATE TABLE my_table (id INTEGER(8), name VARCHAR(255))")dbh:query("INSERT INTO my_table VALUES(1, 'foo')") -- populate the tabledbh:query("INSERT INTO my_table VALUES(2, 'bar')") -- with some test datadbh:query("SELECT id, name FROM my_table", function(row) stream:write(string.format("%5s : %s\n", row.id, row.name))end)dbh:query("UPDATE my_table SET name = 'changed'")stream:write("Affected rows: " .. dbh:affected_rows() .. "\n")dbh:release() -- optional
freeswitch.Dbh(odbc://my_db:uname:passwd)用于从连接池获取一个ODBC数据库句柄
freeswitch.Dbh("sqlite://my_db") 用于从连接池中获取核心数据库(sqlite)一个操作句柄 (如果指定的数据库不存在,会先自动创建).
查看Lua_freeswitch_dbh获取更多的例子。
联系客服