博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C填充一个Lua表
阅读量:2066 次
发布时间:2019-04-29

本文共 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/

你可能感兴趣的文章
集成测试(一)—— 使用PHP页面请求Spring项目的Java接口数据
查看>>
使用Maven构建的简单的单模块SSM项目
查看>>
Intellij IDEA使用(十四)—— 在IDEA中创建包(package)的问题
查看>>
Redis学习笔记(四)—— redis的常用命令和五大数据类型的简单使用
查看>>
两个奇技淫巧,将 Docker 镜像体积减小 99%
查看>>
Istio 1.5 部署指南修正版
查看>>
不要轻易使用 Alpine 镜像来构建 Docker 镜像,有坑!
查看>>
Kubectl exec 背后到底发生了什么?
查看>>
程序员涨薪宝典
查看>>
什么?终止一个容器竟然用了 10 秒钟,这不能忍!
查看>>
Openshift 4.4 静态 IP 离线安装系列(一):准备离线资源
查看>>
万字长文,说透了 Openshift4 的安装过程!
查看>>
Envoy 中文指南系列:Envoy 介绍
查看>>
[译] BeyondProd:云原生安全的一种新方法(Google, 2019)
查看>>
什么?VMware Fusion 也能 docker run 了?
查看>>
教你玩转微服务的装逼指南!
查看>>
Envoy 中文指南系列:Sidecar 模式
查看>>
面试官邪魅一笑:你猜一个 TCP 重置报文的序列号是多少?
查看>>
Envoy 中文指南系列: 安装
查看>>
最华丽的 Kubernetes 桌面客户端:Lens
查看>>