Thanks for the feedback. I get no errors when I implement your check below. The ‘require’ call is not failing.
As I said in my original post, this code works fine in my application:
require "luasql.sqlite3"
env = luasql.sqlite3()
conn = env:connect("testsqlite.db3")
assert(conn:execute("create table if not exists tbl1(one, two)"))
assert(conn:execute("insert into tbl1 values('hello!',10)"))
assert(conn:execute("insert into tbl1 values('goodbye',20)"))
conn:close()
env:close()
The create table and inserts actually happen and the output file contains the
data. So I know for sure that the require is working and that the module is
loaded and working in my application.
This code fails in my application, but succeeds from the lua command line:
require "luasql.sqlite3"
env = luasql.sqlite3()
conn = env:connect("testsqlite.db3")
assert(conn:execute("create table if not exists tbl1(one, two)"))
assert(conn:execute("insert into tbl1 values('hello!',10)"))
assert(conn:execute("insert into tbl1 values('goodbye',20)"))
cursor = assert(conn:execute("select * from tbl1"))
row = {}
while cursor:fetch(row) do
print(table.concat(row, '|'))
end
cursor:close()
conn:close()
env:close()
I get an unhandled exception (access violation) at lua_pcall(L,0,0,0). I don’t
think this has anything to do with mixing lua errors and exceptions.
RW
Ron Wilson, Engineering Project Lead
(o) 434.455.6453, (m) 434.851.1612, www.harris.com
HARRIS CORPORATION | RF Communications Division
assuredcommunications™
From: [email protected]
[mailto:[email protected]] On Behalf Of Ignacio Burgueño
Sent: Thursday, October 21, 2010 1:36 PM
To: Kepler Project mailing list
Subject: Re: [Kepler-Project] help with luasql.sqlite in my c++ code
If I understood correctly, your script works fine using the standalone
interpreter, but fails to do so when you run it from your application, right?
The error handling in your C++ seems wrong.
You load your script, pcall it and if there is an error, you call lua_error.
That will invoke your panic function that gets the message and throws a C++
exception. You're mixing Lua errors and exceptions. Nothing good will come out
of that :D
I think that your Lua script causes a runtime error, and the application blows
up when dealing with it. Probably the require call is failing.
Try this, instead of require "luasql.sqlite3"
do
local ok, err = pcall(require, "luasql.sqlite3")
if not ok then
print(err)
end
Let's see if the error shows up here. Also you can add some printf's in your
code before throwing exceptions to see what's going on.
Regards,
Ignacio
<<inline: image001.png>>
_______________________________________________ Kepler-Project mailing list [email protected] http://lists.luaforge.net/cgi-bin/mailman/listinfo/kepler-project http://www.keplerproject.org/
