本文共 1587 字,大约阅读时间需要 5 分钟。
在将mysql中记录集读取出来的时候,我们需要将数据从libmysql这个C库中读取到mysql数据,然后将其构造成lua的表。这里将会讲解一下C函数如何构Lua表的实例
// main.cpp#include#include "lua.hpp"int main(int argn, char *argv[]){ lua_State *L = luaL_newstate(); luaL_openlibs(L); luaL_dofile(L, "test_lua.lua"); lua_getglobal(L, "dbcb"); lua_pushinteger(L, 88); lua_pushinteger(L, 99); lua_pushinteger(L, 10); lua_pushinteger(L, 11); { lua_newtable(L); { lua_pushstring(L, "field"); lua_newtable(L); { lua_pushinteger(L, 1); lua_pushstring(L, "field_name"); lua_settable(L, -3); } lua_settable(L, -3); lua_pushstring(L, "record"); lua_newtable(L); { lua_pushinteger(L, 1); lua_newtable(L); { lua_pushinteger(L, 1); lua_pushinteger(L, 88); lua_settable(L, -3); } lua_settable(L, -3); } lua_settable(L, -3); } } lua_call(L, 5, 0); lua_close(L);
Lua的脚本
-- test_lua.luafunction dbcb(id, result, sql_type, sql_cb,tbl) print(string.format("id: %d",id)) print(string.format("result: %d",result)) print(string.format("sql_type: %d",sql_type)) print(string.format("sql_cb: %d",sql_cb)) print(string.format("tbl.field[1]: %s", tbl.field[1])) print(string.format("tbl.record[1][1]: %d", tbl.record[1][1]))end
输出的结果:
id: 88result: 99sql_type: 10sql_cb: 11tbl.field[1]: field_nametbl.record[1][1]: 88
转载地址:http://kdfmf.baihongyu.com/