标签: luasql

Luasql和SQLite?

我刚开始将Lua看作是访问SQLite DLL的简单方法,但在尝试使用与DB无关的LuaSQL模块时遇到了错误:

require "luasql.sqlite"
module "luasql.sqlite"

print("Content-type: Text/html\n")

print("Hello!")
Run Code Online (Sandbox Code Playgroud)

请注意,我正在尝试从最基本的设置开始,因此只在工作目录中包含以下文件,而sqlite.dll实际上是从LuaForge站点重命名的sqlite3.dll :

Directory of C:\Temp
<DIR> luasql
lua5.1.exe
lua5.1.dll
hello.lua

Directory of C:\Temp\luasql
sqlite.dll

我错过了一些可以解释错误的二进制文件吗?

谢谢.


编辑:我将DLL重命名为其原始sqlite3.dll并更新源以反映这一点(最初重命名它,因为它是在我找到的样本中调用它的方式).

在这一点上,这是代码的样子......

require "luasql.sqlite3"

-- attempt to call field 'sqlite' (a nil value)
env = luasql.sqlite()

env:close()
Run Code Online (Sandbox Code Playgroud)

...以及我收到的错误消息:

C:\>lua5.1.exe hello.lua
lua5.1.exe: hello.lua:4: attempt to call field 'sqlite' (a nil value)
Run Code Online (Sandbox Code Playgroud)

编辑:发现它是什么:env = luasql.sqlite3()而不是env = luasql.sqlite().

对于像我这样的新手,这里是最新的SQLite LuaSQL驱动程序的完整示例:

require "luasql.sqlite3"

env = luasql.sqlite3()
conn = env:connect("test.sqlite")

assert(conn:execute("create table if not exists tbl1(one …
Run Code Online (Sandbox Code Playgroud)

windows sqlite lua luasql

5
推荐指数
1
解决办法
3762
查看次数

Lua mysql,需要一种逃避数据的方法

我需要一种方法来逃避lua中mysql语句的数据.我习惯在php中执行类似mysql_real_escape_string()的操作但是在使用mysql时无法找到lua中的等价物(当我使用sqlite3时con:escape()工作).我已经读过准备好的陈述是一个解决方案,但它似乎对我不起作用.我究竟做错了什么?

require "luasql.mysql"
env = assert (luasql.mysql())
con = env:connect("db_name", "user", "pass", "localhost")
local stmt = con:prepare([[
    SELECT * FROM `user` 
    WHERE `login` = :a AND `pass` = :b LIMIT 1
]])
stmt.a = "some_user"
stmt.b = "some_pass"
Run Code Online (Sandbox Code Playgroud)

这种错误与"尝试调用方法'准备'(零值)".

如果我尝试在con上运行一个直接的SELECT*执行它工作正常,所以正在建立连接,但是这个prepare语句不起作用(它甚至不认为准备好作为一个有效的方法,似乎).

mysql lua luasql

3
推荐指数
1
解决办法
2292
查看次数

luasql零值

我尝试按照http://www.keplerproject.org/luasql/examples.html上的示例进行操作

Lua 5.2.0  Copyright (C) 1994-2011 Lua.org, PUC-Rio
> require "luasql.postgres"
> env = assert (luasql.postgres())
stdin:1: attempt to index global 'luasql' (a nil value)
stack traceback:
    stdin:1: in main chunk
    [C]: in ?
> 
Run Code Online (Sandbox Code Playgroud)

我错过了什么?

lua luasql

3
推荐指数
1
解决办法
2727
查看次数

在 Ubuntu 上安装 luaSQL

TL;DR:你可以跳到这里。我试图使用 luarocks 安装程序,但 apt-get 安装程序没有问题。


我在 Ubuntu 上安装 luaSQL 时遇到问题。我需要它用于使用luasql = require "luasql.mysql". 我遵循了可以在这里找到的官方文档:http : //keplerproject.github.io/luasql/doc/us/
我尝试过的(以及官方文档建议的):

sudo luarocks install luasql-mysql
Run Code Online (Sandbox Code Playgroud)

给了我以下输出:

Error: Could not find expected file mysql.h for MYSQL -- 
you may have to install MYSQL in your system and/or pass MYSQL_DIR or 
MYSQL_INCDIR to the luarocks command. Example: luarocks install luasql-mysql
MYSQL_DIR=/usr/local
Run Code Online (Sandbox Code Playgroud)

所以我首先必须得到 mysql.h 文件。经过一番谷歌搜索后,我发现了这一点

sudo apt-get update
sudo apt-get install libmysqlclient-dev 
Run Code Online (Sandbox Code Playgroud)

所以我再次尝试了我的第一个命令,但将 mysql.h 文件的位置作为参数:

sudo luarocks install luasql-mysql …
Run Code Online (Sandbox Code Playgroud)

mysql ubuntu lua luasql

1
推荐指数
1
解决办法
3646
查看次数

标签 统计

lua ×4

luasql ×4

mysql ×2

sqlite ×1

ubuntu ×1

windows ×1