cheat-engine/Cheat Engine/LuaSQL.pas

1575 lines
46 KiB
ObjectPascal
Raw Permalink Normal View History

unit LuaSQL;
2017-04-07 12:23:39 +02:00
{
routines for SQL access
example script:
c=createSQLite3Connection()
c.DatabaseName='e:\\something.sqlite3'
c.Connected=true
t=createSQLTransaction()
t.SQLConnection=c
t.Active=true
tn=c.getTableNames()
if #tn==0 then
print("empty")
c.ExecuteDirect([[
CREATE TABLE something (
'id' INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
'processname' char(256) NOT NULL,
'rating' INTEGER);
]])
tn=c.getTableNames()
if #tn==0 then error('no table created') end
end
print("tables:")
local hassomething=false
local i
for i=1,#tn do
print(tn[i])
if tn[i]=='something' then hassomething=true end
end
if hassomething then
pn=process
if (pn==nil) or (p=='nil') then pn='no process' end
--check if pn is in the table, if so, increment rating, else add it
q=createSQLQuery()
q.SQLConnection=c
q.SQLTransaction=t
q.SQL.Text=string.format([[ Select * from something where processname='%s' ]],pn) --not secure, I know, just an example
q.Active=true
if q.RecordCount>0 then
print("In the list")
fields=q.Fields
print("fieldcount="..fields.Count)
local id=q.FieldByName('id').asInteger
print("id="..id)
local rating=q.FieldByName('rating')
print("rating="..rating.asInteger)
q.Active=false
q.StatementType='stUpdate'
q.SQL.Text=string.format([[update something set rating=rating+1 where id=%d]], id)
q.ExecSQL()
09
2017-04-07 12:23:39 +02:00
else
print("Not yet in the list")
c.ExecuteDirect(string.format([[insert into something(processname,rating) values('%s',1)]],pn))
end
q.Active=false
q.StatementType='stSelect'
q.SQL.Text=[[select * from something]]
q.Active=true
count=1
print(string.format("RecordCount=%d", q.RecordCount))
while not q.EOF do
print("line "..count)
local i
for i=0, q.Fields.Count-1 do
print(string.format(" %s = %s", q.Fields[i].FieldName, q.Fields[i].Value))
end
q.next()
count=count+1
end
q.Active=false
q.destroy()
else
error("something doesn't exist")
end
t.Commit()
t.Active=false
c.Connected=false
t.destroy()
c.destroy()
}
{$mode delphi}
interface
uses
Classes, SysUtils, db, sqldb, sqlite3, sqlite3conn, odbcconn, BufDataset,
2017-04-07 12:23:39 +02:00
LuaComponent, LuaClass, luaobject, lua, lualib, lauxlib, typinfo;
procedure initializeLuaSQL;
implementation
uses LuaHandler, LuaCollection, LuaCollectionItem, LuaByteTable;
2017-04-07 01:22:10 +02:00
function createSQLQuery(L: Plua_State): integer; cdecl;
var owner: TComponent;
begin
if lua_gettop(L)=1 then
owner:=lua_toceuserdata(L, 1)
else
owner:=nil;
luaclass_newClass(L, TSQLQuery.Create(owner));
result:=1;
end;
function createSQLTransaction(L: Plua_State): integer; cdecl;
var owner: TComponent;
begin
if lua_gettop(L)=1 then
owner:=lua_toceuserdata(L, 1)
else
owner:=nil;
luaclass_newClass(L, TSQLTransaction.Create(owner));
result:=1;
end;
function createSQLite3Connection(L: Plua_State): integer; cdecl;
var owner: TComponent;
begin
if lua_gettop(L)=1 then
owner:=lua_toceuserdata(L, 1)
else
owner:=nil;
luaclass_newClass(L, TSQLite3Connection.Create(owner));
result:=1;
end;
function setSQLiteLibraryName(L: Plua_State): integer; cdecl;
begin
if lua_gettop(L)=1 then
SQLiteLibraryName:=Lua_ToString(L,1);
result:=0;
end;
function sqlite3connection_createDB(L: Plua_State): integer; cdecl;
begin
2018-05-29 15:10:22 +02:00
result:=0;
try
TSQLite3Connection(luaclass_getClassObject(L)).CreateDB;
except
on e:exception do
begin
lua_pushstring(L, e.message);
lua_error(L);
end;
end;
end;
function sqlite3connection_dropDB(L: Plua_State): integer; cdecl;
begin
2018-05-29 15:10:22 +02:00
result:=0;
try
TSQLite3Connection(luaclass_getClassObject(L)).DropDB;
except
on e:exception do
begin
lua_pushstring(L, e.message);
lua_error(L);
end;
end;
end;
function sqlite3connection_getInsertID(L: Plua_State): integer; cdecl;
begin
lua_pushinteger(L, TSQLite3Connection(luaclass_getClassObject(L)).GetInsertID);
result:=1;
end;
function createODBCConnection(L: Plua_State): integer; cdecl;
var owner: TComponent;
begin
if lua_gettop(L)=1 then
owner:=lua_toceuserdata(L, 1)
else
owner:=nil;
luaclass_newClass(L, TODBCConnection.Create(owner));
result:=1;
end;
function sqlconnection_startTransaction(L: Plua_State): integer; cdecl;
begin
result:=0;
try
TSQLConnection(luaclass_getClassObject(L)).StartTransaction;
except
on e:exception do
begin
lua_pushstring(L, e.message);
lua_error(L);
end;
end;
end;
function sqlconnection_endTransaction(L: Plua_State): integer; cdecl;
begin
result:=0;
try
TSQLConnection(luaclass_getClassObject(L)).EndTransaction;
except
on e:exception do
begin
lua_pushstring(L, e.message);
lua_error(L);
end;
end;
end;
function sqlconnection_executeDirect(L: Plua_State): integer; cdecl;
begin
result:=0;
if lua_gettop(L)>=1 then
begin
try
TSQLConnection(luaclass_getClassObject(L)).ExecuteDirect(Lua_ToString(L,1));
except
on e:exception do
begin
lua_pushstring(L, e.message);
lua_error(L);
end;
end;
end;
end;
2017-04-07 01:22:10 +02:00
//procedure GetFieldNames(const TableName : string; List : TStrings); virtual;
function sqlconnection_getFieldNames(L: Plua_State): integer; cdecl;
var
tablename: string;
s: tstringlist;
i: integer;
begin
result:=0;
if lua_gettop(L)>=1 then
begin
tablename:=Lua_ToString(L,1);
try
s:=tstringlist.create;
try
TSQLConnection(luaclass_getClassObject(L)).GetFieldNames(tablename,s);
result:=1;
lua_newtable(L);
for i:=0 to s.Count-1 do
begin
lua_pushinteger(L,i+1);
lua_pushstring(L,s[i]);
lua_settable(L,-3);
end;
finally
s.free;
end;
except
on e:exception do
begin
lua_pushstring(L, e.message);
lua_error(L);
end;
end;
end;
end;
function sqlconnection_getTableNames(L: Plua_State): integer; cdecl;
var
s: tstringlist;
i: integer;
begin
result:=0;
try
s:=tstringlist.create;
try
TSQLConnection(luaclass_getClassObject(L)).GetTableNames(s);
result:=1;
lua_newtable(L);
for i:=0 to s.Count-1 do
begin
lua_pushinteger(L,i+1);
lua_pushstring(L,s[i]);
lua_settable(L,-3);
end;
finally
s.free;
end;
except
on e:exception do
begin
lua_pushstring(L, e.message);
lua_error(L);
end;
end;
end;
function database_getTransactionCount(L: Plua_State): integer; cdecl;
begin
lua_pushinteger(L, TDatabase(luaclass_getClassObject(L)).TransactionCount);
result:=1;
end;
function customconnection_open(L: Plua_State): integer; cdecl;
begin
result:=0;
try
TCustomConnection(luaclass_getClassObject(L)).Open;
except
on e:exception do
begin
lua_pushstring(L, e.message);
lua_error(L);
end;
end;
end;
function customconnection_close(L: Plua_State): integer; cdecl;
var force: boolean;
begin
result:=0;
if lua_gettop(L)>=1 then
force:=lua_toboolean(L,1)
else
force:=false;
try
TCustomConnection(luaclass_getClassObject(L)).Close(force);
except
on e:exception do
begin
lua_pushstring(L, e.message);
lua_error(L);
end;
end;
end;
function dbtransaction_getDataBase(L: Plua_State): integer; cdecl;
begin
luaclass_newClass(L,TDBTransaction(luaclass_getClassObject(L)).DataBase);
result:=1;
end;
function dbtransaction_setDataBase(L: Plua_State): integer; cdecl;
begin
try
TDBTransaction(luaclass_getClassObject(L)).DataBase:=lua_ToCEUserData(L,1);
except
on e:exception do
begin
lua_pushstring(L, e.message);
lua_error(L);
end;
end;
result:=0;
end;
function dbtransaction_closeDataSets(L: Plua_State): integer; cdecl;
begin
TDBTransaction(luaclass_getClassObject(L)).CloseDataSets;
result:=0;
end;
function sqltransaction_commit(L: Plua_State): integer; cdecl;
begin
result:=0;
try
TSQLTransaction(luaclass_getClassObject(L)).Commit;
except
on e:exception do
begin
lua_pushstring(L, e.message);
lua_error(L);
end;
end;
end;
function sqltransaction_commitRetaining(L: Plua_State): integer; cdecl;
begin
result:=0;
try
TSQLTransaction(luaclass_getClassObject(L)).CommitRetaining;
except
on e:exception do
begin
lua_pushstring(L, e.message);
lua_error(L);
end;
end;
end;
function sqltransaction_rollback(L: Plua_State): integer; cdecl;
begin
result:=0;
try
TSQLTransaction(luaclass_getClassObject(L)).rollback;
except
on e:exception do
begin
lua_pushstring(L, e.message);
lua_error(L);
end;
end;
end;
function sqltransaction_rollbackRetaining(L: Plua_State): integer; cdecl;
begin
result:=0;
try
TSQLTransaction(luaclass_getClassObject(L)).rollbackRetaining;
except
on e:exception do
begin
lua_pushstring(L, e.message);
lua_error(L);
end;
end;
end;
function sqltransaction_startTransaction(L: Plua_State): integer; cdecl;
begin
result:=0;
try
TSQLTransaction(luaclass_getClassObject(L)).StartTransaction;
except
on e:exception do
begin
lua_pushstring(L, e.message);
lua_error(L);
end;
end;
end;
function sqltransaction_endTransaction(L: Plua_State): integer; cdecl;
begin
result:=0;
try
TSQLTransaction(luaclass_getClassObject(L)).EndTransaction;
except
on e:exception do
begin
lua_pushstring(L, e.message);
lua_error(L);
end;
end;
end;
//-----------------------
function dataset_getBlockReadSize(L: Plua_State): integer; cdecl;
begin
lua_pushinteger(L, tdataset(luaclass_getClassObject(L)).BlockReadSize);
result:=1;
end;
function dataset_setBlockReadSize(L: Plua_State): integer; cdecl;
begin
result:=0;
tdataset(luaclass_getClassObject(L)).BlockReadSize:=lua_tointeger(L,1);
end;
function dataset_getBOF(L: Plua_State): integer; cdecl;
begin
lua_pushboolean(L, tdataset(luaclass_getClassObject(L)).BOF);
result:=1;
end;
function dataset_getCanModify(L: Plua_State): integer; cdecl;
begin
lua_pushboolean(L, tdataset(luaclass_getClassObject(L)).CanModify);
result:=1;
end;
function dataset_getDefaultFields(L: Plua_State): integer; cdecl;
begin
lua_pushboolean(L, tdataset(luaclass_getClassObject(L)).DefaultFields);
result:=1;
end;
function dataset_getEOF(L: Plua_State): integer; cdecl;
begin
lua_pushboolean(L, tdataset(luaclass_getClassObject(L)).EOF);
result:=1;
end;
function dataset_getFieldCount(L: Plua_State): integer; cdecl;
begin
lua_pushinteger(L, tdataset(luaclass_getClassObject(L)).FieldCount);
result:=1;
end;
function dataset_getFields(L: Plua_State): integer; cdecl;
begin
luaclass_newClass(L, tdataset(luaclass_getClassObject(L)).Fields);
result:=1;
end;
function dataset_getFound(L: Plua_State): integer; cdecl;
begin
lua_pushboolean(L, tdataset(luaclass_getClassObject(L)).Found);
result:=1;
end;
function dataset_getModified(L: Plua_State): integer; cdecl;
begin
lua_pushboolean(L, tdataset(luaclass_getClassObject(L)).Modified);
result:=1;
end;
function dataset_getIsUniDirectional(L: Plua_State): integer; cdecl;
begin
lua_pushboolean(L, tdataset(luaclass_getClassObject(L)).IsUniDirectional);
result:=1;
end;
function dataset_getRecordCount(L: Plua_State): integer; cdecl;
begin
lua_pushinteger(L, tdataset(luaclass_getClassObject(L)).RecordCount);
result:=1;
end;
function dataset_getRecNo(L: Plua_State): integer; cdecl;
begin
lua_pushinteger(L, tdataset(luaclass_getClassObject(L)).RecNo);
result:=1;
end;
function dataset_setRecNo(L: Plua_State): integer; cdecl;
begin
result:=0;
tdataset(luaclass_getClassObject(L)).RecNo:=lua_tointeger(L,1);
end;
function dataset_getFieldValues(L: PLua_State): integer; cdecl;
var
dataset: TDataSet;
v: string;
begin
result:=0;
dataset:=luaclass_getClassObject(L);
if lua_gettop(L)>=1 then
begin
v:=Lua_ToString(L,1);
lua_pushvariant(L, dataset.FieldValues[v]);
result:=1;
end;
end;
function dataset_getFilter(L: Plua_State): integer; cdecl;
begin
lua_pushstring(L, tdataset(luaclass_getClassObject(L)).Filter);
result:=1;
end;
function dataset_setFilter(L: Plua_State): integer; cdecl;
begin
result:=0;
tdataset(luaclass_getClassObject(L)).Filter:=Lua_ToString(L,1);
end;
function dataset_getFiltered(L: Plua_State): integer; cdecl;
begin
lua_pushboolean(L, tdataset(luaclass_getClassObject(L)).Filtered);
result:=1;
end;
function dataset_setFiltered(L: Plua_State): integer; cdecl;
begin
result:=0;
tdataset(luaclass_getClassObject(L)).Filtered:=lua_toboolean(L,1);
end;
function dataset_setFieldValues(L: PLua_State): integer; cdecl;
var
dataset: TDataSet;
v: string;
begin
result:=0;
dataset:=luaclass_getClassObject(L);
if lua_gettop(L)=2 then
begin
v:=Lua_ToString(L,1);
dataset.FieldValues[v]:=lua_tovariant(L,2);
end;
end;
function dataset_getFilterOptions(L: Plua_State): integer; cdecl;
var ti: PTypeInfo;
begin
ti:=typeinfo(TFilterOptions);
lua_pushstring(L, SetToString(ti, integer(tdataset(luaclass_getClassObject(L)).FilterOptions),true));
result:=1;
end;
function dataset_setFilterOptions(L: Plua_State): integer; cdecl;
var ti: PTypeInfo;
begin
ti:=typeinfo(TFilterOptions);
tdataset(luaclass_getClassObject(L)).FilterOptions:=TFilterOptions(StringToSet(ti,Lua_ToString(L,1)));
result:=0;
end;
function dataset_getActive(L: Plua_State): integer; cdecl;
begin
lua_pushboolean(L, tdataset(luaclass_getClassObject(L)).Active);
result:=1;
end;
function dataset_setActive(L: Plua_State): integer; cdecl;
begin
result:=0;
tdataset(luaclass_getClassObject(L)).Active:=lua_toboolean(L,1);
end;
function dataset_getAutoCalcFields(L: Plua_State): integer; cdecl;
begin
lua_pushboolean(L, tdataset(luaclass_getClassObject(L)).AutoCalcFields);
result:=1;
end;
function dataset_setAutoCalcFields(L: Plua_State): integer; cdecl;
begin
result:=0;
tdataset(luaclass_getClassObject(L)).AutoCalcFields:=lua_toboolean(L,1);
end;
function dataset_append(L: Plua_State): integer; cdecl;
begin
tdataset(luaclass_getClassObject(L)).Append;
result:=0;
end;
function dataset_cancel(L: Plua_State): integer; cdecl;
begin
tdataset(luaclass_getClassObject(L)).cancel;
result:=0;
end;
function dataset_checkBrowseMode(L: Plua_State): integer; cdecl;
begin
tdataset(luaclass_getClassObject(L)).CheckBrowseMode;
result:=0;
end;
function dataset_clearFields(L: Plua_State): integer; cdecl;
begin
tdataset(luaclass_getClassObject(L)).ClearFields;
result:=0;
end;
function dataset_close(L: Plua_State): integer; cdecl;
begin
tdataset(luaclass_getClassObject(L)).Close;
result:=0;
end;
function dataset_controlsDisabled(L: Plua_State): integer; cdecl;
begin
lua_pushboolean(L, tdataset(luaclass_getClassObject(L)).ControlsDisabled);
result:=1;
end;
function dataset_cursorPosChanged(L: Plua_State): integer; cdecl;
begin
tdataset(luaclass_getClassObject(L)).CursorPosChanged;
result:=0;
end;
function dataset_delete(L: Plua_State): integer; cdecl;
begin
tdataset(luaclass_getClassObject(L)).Delete;
result:=0;
end;
function dataset_disableControls(L: Plua_State): integer; cdecl;
begin
tdataset(luaclass_getClassObject(L)).DisableControls;
result:=0;
end;
function dataset_edit(L: Plua_State): integer; cdecl;
begin
tdataset(luaclass_getClassObject(L)).Edit;
result:=0;
end;
function dataset_enableControls(L: Plua_State): integer; cdecl;
begin
tdataset(luaclass_getClassObject(L)).EnableControls;
result:=0;
end;
function dataset_fieldByName(L: Plua_State): integer; cdecl;
begin
luaclass_newClass(L, tdataset(luaclass_getClassObject(L)).FieldByName(lua_tostring(L,1)));
result:=1;
end;
function dataset_findField(L: Plua_State): integer; cdecl;
begin
luaclass_newClass(L, tdataset(luaclass_getClassObject(L)).FindField(lua_tostring(L,1)));
result:=1;
end;
function dataset_findFirst(L: Plua_State): integer; cdecl;
begin
lua_pushboolean(L, tdataset(luaclass_getClassObject(L)).FindFirst);
result:=1;
end;
function dataset_findLast(L: Plua_State): integer; cdecl;
begin
lua_pushboolean(L, tdataset(luaclass_getClassObject(L)).FindLast);
result:=1;
end;
function dataset_findNext(L: Plua_State): integer; cdecl;
begin
lua_pushboolean(L, tdataset(luaclass_getClassObject(L)).FindNext);
result:=1;
end;
function dataset_findPrior(L: Plua_State): integer; cdecl;
begin
lua_pushboolean(L, tdataset(luaclass_getClassObject(L)).FindPrior);
result:=1;
end;
function dataset_first(L: Plua_State): integer; cdecl;
begin
tdataset(luaclass_getClassObject(L)).First;
result:=0;
end;
function dataset_insert(L: Plua_State): integer; cdecl;
begin
tdataset(luaclass_getClassObject(L)).Insert;
result:=0;
end;
function dataset_isEmpty(L: Plua_State): integer; cdecl;
begin
lua_pushboolean(L, tdataset(luaclass_getClassObject(L)).IsEmpty);
result:=1;
end;
function dataset_last(L: Plua_State): integer; cdecl;
begin
tdataset(luaclass_getClassObject(L)).last;
result:=0;
end;
function dataset_locate(L: Plua_State): integer; cdecl;
begin
lua_pushboolean(L, tdataset(luaclass_getClassObject(L)).Locate(Lua_ToString(L,1), lua_tovariant(L,2), TLocateOptions(StringToSet(PTypeInfo(typeinfo(TLocateOptions)),lua_tovariant(L,3)))));
result:=1;
end;
function dataset_lookup(L: Plua_State): integer; cdecl;
begin
lua_pushvariant(L, tdataset(luaclass_getClassObject(L)).Lookup(Lua_ToString(L,1), lua_tovariant(L,2), lua_tostring(L,3)));
result:=1;
end;
function dataset_moveBy(L: Plua_State): integer; cdecl;
begin
lua_pushinteger(L, tdataset(luaclass_getClassObject(L)).MoveBy(lua_tointeger(L,1)));
result:=1;
end;
function dataset_next(L: Plua_State): integer; cdecl;
begin
tdataset(luaclass_getClassObject(L)).next;
result:=0;
end;
function dataset_open(L: Plua_State): integer; cdecl;
begin
tdataset(luaclass_getClassObject(L)).open;
result:=0;
end;
function dataset_post(L: Plua_State): integer; cdecl;
begin
tdataset(luaclass_getClassObject(L)).post;
result:=0;
end;
function dataset_prior(L: Plua_State): integer; cdecl;
begin
tdataset(luaclass_getClassObject(L)).prior;
result:=0;
end;
function dataset_refresh(L: Plua_State): integer; cdecl;
begin
tdataset(luaclass_getClassObject(L)).refresh;
result:=0;
end;
function dataset_updateCursorPos(L: Plua_State): integer; cdecl;
begin
tdataset(luaclass_getClassObject(L)).UpdateCursorPos;
result:=0;
end;
function dataset_updateRecord(L: Plua_State): integer; cdecl;
begin
tdataset(luaclass_getClassObject(L)).UpdateRecord;
result:=0;
end;
procedure dataset_addMetaData(L: PLua_state; metatable: integer; userdata: integer );
begin
component_addMetaData(L, metatable, userdata);
luaclass_addPropertyToTable(L, metatable, userdata, 'BlockReadSize', dataset_getBlockReadSize, dataset_setBlockReadSize);
luaclass_addPropertyToTable(L, metatable, userdata, 'BOF', dataset_getBOF, nil);
luaclass_addPropertyToTable(L, metatable, userdata, 'CanModify', dataset_getCanModify, nil);
luaclass_addPropertyToTable(L, metatable, userdata, 'DefaultFields', dataset_getDefaultFields, nil);
luaclass_addPropertyToTable(L, metatable, userdata, 'EOF', dataset_getEOF, nil);
luaclass_addPropertyToTable(L, metatable, userdata, 'FieldCount', dataset_getFieldCount, nil);
luaclass_addPropertyToTable(L, metatable, userdata, 'Fields', dataset_getFields, nil);
luaclass_addPropertyToTable(L, metatable, userdata, 'Found', dataset_getFound, nil);
luaclass_addPropertyToTable(L, metatable, userdata, 'Modified', dataset_getModified, nil);
luaclass_addPropertyToTable(L, metatable, userdata, 'IsUniDirectional', dataset_getIsUniDirectional, nil);
luaclass_addPropertyToTable(L, metatable, userdata, 'RecordCount', dataset_getRecordCount, nil);
luaclass_addPropertyToTable(L, metatable, userdata, 'RecNo', dataset_getRecNo, dataset_setRecNo);
luaclass_addArrayPropertyToTable(L, metatable,userdata,'FieldValues',dataset_getFieldValues, dataset_setFieldValues);
luaclass_addPropertyToTable(L, metatable, userdata, 'Filter', dataset_getFilter, dataset_setFilter);
luaclass_addPropertyToTable(L, metatable, userdata, 'Filtered', dataset_getFiltered, dataset_setFiltered);
luaclass_addPropertyToTable(L, metatable, userdata, 'FilterOptions', dataset_getFilterOptions, dataset_setFilterOptions);
luaclass_addPropertyToTable(L, metatable, userdata, 'Active', dataset_getActive, dataset_setActive); //
luaclass_addPropertyToTable(L, metatable, userdata, 'AutoCalcFields', dataset_getAutoCalcFields, dataset_setAutoCalcFields);
luaclass_addClassFunctionToTable(L, metatable, userdata, 'append', dataset_append);
luaclass_addClassFunctionToTable(L, metatable, userdata, 'cancel', dataset_cancel);
luaclass_addClassFunctionToTable(L, metatable, userdata, 'checkBrowseMode', dataset_checkBrowseMode);
luaclass_addClassFunctionToTable(L, metatable, userdata, 'clearFields', dataset_clearFields);
luaclass_addClassFunctionToTable(L, metatable, userdata, 'close', dataset_close);
luaclass_addClassFunctionToTable(L, metatable, userdata, 'controlsDisabled', dataset_controlsDisabled);
luaclass_addClassFunctionToTable(L, metatable, userdata, 'cursorPosChanged', dataset_cursorPosChanged);
luaclass_addClassFunctionToTable(L, metatable, userdata, 'delete', dataset_delete);
luaclass_addClassFunctionToTable(L, metatable, userdata, 'disableControls', dataset_disableControls);
luaclass_addClassFunctionToTable(L, metatable, userdata, 'edit', dataset_edit);
luaclass_addClassFunctionToTable(L, metatable, userdata, 'enableControls', dataset_enableControls);
luaclass_addClassFunctionToTable(L, metatable, userdata, 'fieldByName', dataset_FieldByName);
luaclass_addClassFunctionToTable(L, metatable, userdata, 'findField', dataset_FindField);
luaclass_addClassFunctionToTable(L, metatable, userdata, 'findFirst', dataset_FindFirst);
luaclass_addClassFunctionToTable(L, metatable, userdata, 'findLast', dataset_FindLast);
luaclass_addClassFunctionToTable(L, metatable, userdata, 'findNext', dataset_FindNext);
luaclass_addClassFunctionToTable(L, metatable, userdata, 'findPrior', dataset_FindPrior);
luaclass_addClassFunctionToTable(L, metatable, userdata, 'first', dataset_First);
luaclass_addClassFunctionToTable(L, metatable, userdata, 'insert', dataset_Insert);
luaclass_addClassFunctionToTable(L, metatable, userdata, 'isEmpty', dataset_IsEmpty);
luaclass_addClassFunctionToTable(L, metatable, userdata, 'last', dataset_Last);
luaclass_addClassFunctionToTable(L, metatable, userdata, 'locate', dataset_locate);
luaclass_addClassFunctionToTable(L, metatable, userdata, 'lookup', dataset_lookup);
luaclass_addClassFunctionToTable(L, metatable, userdata, 'moveBy', dataset_moveBy);
luaclass_addClassFunctionToTable(L, metatable, userdata, 'next', dataset_next);
luaclass_addClassFunctionToTable(L, metatable, userdata, 'open', dataset_open);
luaclass_addClassFunctionToTable(L, metatable, userdata, 'post', dataset_post);
luaclass_addClassFunctionToTable(L, metatable, userdata, 'prior', dataset_prior);
luaclass_addClassFunctionToTable(L, metatable, userdata, 'refresh', dataset_refresh);
luaclass_addClassFunctionToTable(L, metatable, userdata, 'updateCursorPos', dataset_updateCursorPos);
luaclass_addClassFunctionToTable(L, metatable, userdata, 'updateRecord', dataset_updateRecord);
end;
function dbdataset_getDatabase(L: Plua_State): integer; cdecl;
begin
luaclass_newClass(L, tdbdataset(luaclass_getClassObject(L)).DataBase);
result:=1;
end;
function dbdataset_setDatabase(L: Plua_State): integer; cdecl;
begin
result:=0;
tdbdataset(luaclass_getClassObject(L)).DataBase:=lua_ToCEUserData(L,1);
end;
function dbdataset_getTransaction(L: Plua_State): integer; cdecl;
begin
luaclass_newClass(L, tdbdataset(luaclass_getClassObject(L)).Transaction);
result:=1;
end;
function dbdataset_setTransaction(L: Plua_State): integer; cdecl;
begin
result:=0;
tdbdataset(luaclass_getClassObject(L)).Transaction:=lua_ToCEUserData(L,1);
end;
procedure dbdataset_addMetaData(L: PLua_state; metatable: integer; userdata: integer );
begin
dataset_addMetaData(L, metatable, userdata);
luaclass_addPropertyToTable(L, metatable, userdata, 'Database', dbdataset_getDatabase, dbdataset_setDatabase);
luaclass_addPropertyToTable(L, metatable, userdata, 'Transaction', dbdataset_getTransaction, dbdataset_setTransaction);
end;
2017-04-07 01:22:10 +02:00
function custombufdataset_getMaxIndexesCount(L: Plua_State): integer; cdecl;
begin
result:=1;
lua_pushinteger(L, TCustomBufDataset(luaclass_getClassObject(L)).MaxIndexesCount);
end;
function custombufdataset_setMaxIndexesCount(L: Plua_State): integer; cdecl;
begin
result:=0;
TCustomBufDataset(luaclass_getClassObject(L)).MaxIndexesCount:=lua_tointeger(L,1);
end;
function custombufdataset_getChangeCount(L: Plua_State): integer; cdecl;
begin
result:=1;
lua_pushinteger(L, TCustomBufDataset(luaclass_getClassObject(L)).ChangeCount);
end;
function custombufdataset_getReadOnly(L: Plua_State): integer; cdecl;
begin
result:=1;
lua_pushboolean(L, TCustomBufDataset(luaclass_getClassObject(L)).ReadOnly);
end;
function custombufdataset_setReadOnly(L: Plua_State): integer; cdecl;
begin
result:=0;
TCustomBufDataset(luaclass_getClassObject(L)).ReadOnly:=lua_toboolean(L,1);
end;
procedure custombufdataset_addMetaData(L: PLua_state; metatable: integer; userdata: integer );
begin
dbdataset_addMetaData(L, metatable, userdata);
2017-04-07 01:22:10 +02:00
luaclass_addPropertyToTable(L, metatable, userdata, 'MaxIndexesCount', custombufdataset_getMaxIndexesCount, custombufdataset_setMaxIndexesCount);
luaclass_addPropertyToTable(L, metatable, userdata, 'ChangeCount', custombufdataset_getChangeCount, nil);
luaclass_addPropertyToTable(L, metatable, userdata, 'ReadOnly', custombufdataset_getReadOnly, custombufdataset_setReadOnly);
end;
function customsqlquery_getPrepared(L: Plua_State): integer; cdecl;
begin
lua_pushboolean(L, TCustomSQLQuery(luaclass_getClassObject(L)).Prepared);
result:=1;
end;
function customsqlquery_getSQLConnection(L: Plua_State): integer; cdecl;
begin
luaclass_newClass(L, TCustomSQLQuery(luaclass_getClassObject(L)).SQLConnection);
result:=1;
end;
function customsqlquery_setSQLConnection(L: Plua_State): integer; cdecl;
begin
result:=0;
TCustomSQLQuery(luaclass_getClassObject(L)).SQLConnection:=lua_ToCEUserData(L,1);
end;
function customsqlquery_getSQLTransaction(L: Plua_State): integer; cdecl;
begin
luaclass_newClass(L, TCustomSQLQuery(luaclass_getClassObject(L)).SQLTransaction);
result:=1;
end;
function customsqlquery_setSQLTransaction(L: Plua_State): integer; cdecl;
begin
result:=0;
TCustomSQLQuery(luaclass_getClassObject(L)).SQLTransaction:=lua_ToCEUserData(L,1);
end;
function customsqlquery_getChangeCount(L: Plua_State): integer; cdecl;
begin
lua_pushinteger(L, TCustomSQLQuery(luaclass_getClassObject(L)).ChangeCount);
result:=1;
end;
function customsqlquery_prepare(L: Plua_State): integer; cdecl;
begin
TCustomSQLQuery(luaclass_getClassObject(L)).Prepare;
result:=0;
end;
function customsqlquery_unprepare(L: Plua_State): integer; cdecl;
begin
TCustomSQLQuery(luaclass_getClassObject(L)).unPrepare;
result:=0;
end;
function customsqlquery_execSQL(L: Plua_State): integer; cdecl;
begin
TCustomSQLQuery(luaclass_getClassObject(L)).ExecSQL;
result:=0;
end;
function customsqlquery_rowsAffected(L: Plua_State): integer; cdecl;
begin
lua_pushinteger(L, TCustomSQLQuery(luaclass_getClassObject(L)).rowsAffected);
result:=1;
end;
function customsqlquery_paramByName(L: Plua_State): integer; cdecl;
begin
luaclass_newClass(L, TCustomSQLQuery(luaclass_getClassObject(L)).ParamByName(Lua_ToString(L,1)));
result:=1;
end;
procedure customsqlquery_addMetaData(L: PLua_state; metatable: integer; userdata: integer );
begin
custombufdataset_addMetaData(L, metatable, userdata);
2017-04-07 01:22:10 +02:00
luaclass_addPropertyToTable(L, metatable, userdata, 'Prepared', customsqlquery_getPrepared, nil);
luaclass_addPropertyToTable(L, metatable, userdata, 'SQLConnection', customsqlquery_getSQLConnection, customsqlquery_setSQLConnection);
luaclass_addPropertyToTable(L, metatable, userdata, 'SQLTransaction', customsqlquery_getSQLTransaction, customsqlquery_setSQLTransaction);
luaclass_addClassFunctionToTable(L, metatable, userdata, 'prepare', customsqlquery_prepare);
luaclass_addClassFunctionToTable(L, metatable, userdata, 'unprepare', customsqlquery_unprepare);
luaclass_addClassFunctionToTable(L, metatable, userdata, 'execSQL', customsqlquery_execSQL);
luaclass_addClassFunctionToTable(L, metatable, userdata, 'rowsAffected', customsqlquery_rowsAffected);
luaclass_addClassFunctionToTable(L, metatable, userdata, 'paramByName', customsqlquery_paramByName);
end;
function sqlquery_getSchemaType(L: Plua_State): integer; cdecl;
begin
lua_pushstring(L, GetEnumName(typeinfo(TSchemaType), integer(tsqlquery(luaclass_getClassObject(L)).SchemaType)));
result:=1;
end;
function sqlquery_getStatementType(L: Plua_State): integer; cdecl;
begin
lua_pushstring(L, GetEnumName(typeinfo(TStatementType), integer(tsqlquery(luaclass_getClassObject(L)).StatementType)));
result:=1;
end;
procedure sqlquery_addMetaData(L: PLua_state; metatable: integer; userdata: integer );
begin
customsqlquery_addMetaData(L, metatable, userdata);
//TSQLQuery(0).Params;
luaclass_addPropertyToTable(L, metatable, userdata, 'SchemaType', sqlquery_getSchemaType, nil);
luaclass_addPropertyToTable(L, metatable, userdata, 'StatementType', sqlquery_getStatementType, nil);
end;
function param_getAsBoolean(L: Plua_State): integer; cdecl;
begin
lua_pushboolean(L, tparam(luaclass_getClassObject(L)).AsBoolean);
result:=1;
end;
function param_setAsBoolean(L: Plua_State): integer; cdecl;
begin
tparam(luaclass_getClassObject(L)).AsBoolean:=lua_toboolean(L,1);
result:=0;
end;
function param_getAsByteTable(L: Plua_State): integer; cdecl;
var tb: Tbytes;
begin
tb:=tparam(luaclass_getClassObject(L)).AsBytes;
LuaByteTable.CreateByteTableFromPointer(L, @tb[0], length(tb));
result:=1;
end;
function param_setAsByteTable(L: Plua_State): integer; cdecl;
var
maxsize: integer;
tb: Tbytes;
begin
maxsize:=lua_objlen(l, 1);
setlength(tb, maxsize);
LuaByteTable.readBytesFromTable(L,1,@tb[0],maxsize);
tparam(luaclass_getClassObject(L)).AsBytes:=tb;
result:=0;
end;
function param_getAsInteger(L: Plua_State): integer; cdecl;
begin
lua_pushInteger(L, tparam(luaclass_getClassObject(L)).AsInteger);
result:=1;
end;
function param_setAsInteger(L: Plua_State): integer; cdecl;
begin
tparam(luaclass_getClassObject(L)).AsInteger:=lua_toInteger(L,1);
result:=0;
end;
function param_getAsNumber(L: Plua_State): integer; cdecl;
begin
lua_pushNumber(L, tparam(luaclass_getClassObject(L)).AsFloat);
result:=1;
end;
function param_setAsNumber(L: Plua_State): integer; cdecl;
begin
tparam(luaclass_getClassObject(L)).AsFloat:=lua_toNumber(L,1);
result:=0;
end;
function param_getAsString(L: Plua_State): integer; cdecl;
begin
lua_pushString(L, tparam(luaclass_getClassObject(L)).AsString);
result:=1;
end;
function param_setAsString(L: Plua_State): integer; cdecl;
begin
tparam(luaclass_getClassObject(L)).AsString:=lua_toString(L,1);
result:=0;
end;
function param_getText(L: Plua_State): integer; cdecl;
begin
lua_pushString(L, tparam(luaclass_getClassObject(L)).Text);
result:=1;
end;
function param_setText(L: Plua_State): integer; cdecl;
begin
tparam(luaclass_getClassObject(L)).Text:=lua_toString(L,1);
result:=0;
end;
function param_isNull(L: Plua_State): integer; cdecl;
begin
lua_pushboolean(L, tparam(luaclass_getClassObject(L)).IsNull);
result:=1;
end;
function params_addParam(L: Plua_State): integer; cdecl;
begin
tparams(luaclass_getClassObject(L)).AddParam(tparam(lua_ToCEUserData(L,1)));
result:=0;
end;
function params_getItem(L: PLua_State): integer; cdecl;
var
params: TParams;
index: integer;
begin
result:=0;
params:=luaclass_getClassObject(L);
if lua_gettop(L)>=1 then
begin
index:=lua_toInteger(L,1);
luaclass_newClass(L, params.Items[index]);
result:=1;
end;
end;
function params_setItem(L: PLua_State): integer; cdecl;
var
params: TParams;
index: integer;
begin
result:=0;
params:=luaclass_getClassObject(L);
if lua_gettop(L)=2 then
begin
index:=lua_toInteger(L,1);
params.Items[index]:=lua_ToCEUserData(L,2);
end;
end;
function field_getAsVariant(L: Plua_State): integer; cdecl;
begin
try
lua_pushvariant(L, tfield(luaclass_getClassObject(L)).Value);
result:=1;
except
on e:exception do
begin
lua_pushstring(L,e.message);
lua_error(L);
end;
end;
end;
function field_setAsVariant(L: Plua_State): integer; cdecl;
begin
try
tfield(luaclass_getClassObject(L)).Value:=lua_tovariant(L,1);
except
on e:exception do
begin
lua_pushstring(L,e.message);
lua_error(L);
end;
end;
result:=0;
end;
function field_getDataType(L: Plua_State): integer; cdecl;
begin
lua_pushstring(L, GetEnumName(typeinfo(TFieldType), integer(tfield(luaclass_getClassObject(L)).DataType)));
result:=1;
end;
function field_getSize(L: Plua_State): integer; cdecl;
begin
lua_pushInteger(L, tfield(luaclass_getClassObject(L)).Size);
result:=1;
end;
function field_setSize(L: Plua_State): integer; cdecl;
begin
tfield(luaclass_getClassObject(L)).Size:=lua_toInteger(L,1);
result:=0;
end;
function field_getAsBoolean(L: Plua_State): integer; cdecl;
begin
lua_pushboolean(L, tfield(luaclass_getClassObject(L)).AsBoolean);
result:=1;
end;
function field_setAsBoolean(L: Plua_State): integer; cdecl;
begin
tfield(luaclass_getClassObject(L)).AsBoolean:=lua_toboolean(L,1);
result:=0;
end;
function field_getAsByteTable(L: Plua_State): integer; cdecl;
var tb: Tbytes;
begin
tb:=tfield(luaclass_getClassObject(L)).AsBytes;
LuaByteTable.CreateByteTableFromPointer(L, @tb[0], length(tb));
result:=1;
end;
function field_setAsByteTable(L: Plua_State): integer; cdecl;
var
maxsize: integer;
tb: Tbytes;
begin
maxsize:=lua_objlen(l, 1);
setlength(tb, maxsize);
LuaByteTable.readBytesFromTable(L,1,@tb[0],maxsize);
tfield(luaclass_getClassObject(L)).AsBytes:=tb;
result:=0;
end;
function field_getAsInteger(L: Plua_State): integer; cdecl;
begin
lua_pushInteger(L, tfield(luaclass_getClassObject(L)).AsInteger);
result:=1;
end;
function field_setAsInteger(L: Plua_State): integer; cdecl;
begin
tfield(luaclass_getClassObject(L)).AsInteger:=lua_toInteger(L,1);
result:=0;
end;
function field_getAsNumber(L: Plua_State): integer; cdecl;
begin
lua_pushNumber(L, tfield(luaclass_getClassObject(L)).AsFloat);
result:=1;
end;
function field_setAsNumber(L: Plua_State): integer; cdecl;
begin
tfield(luaclass_getClassObject(L)).AsFloat:=lua_toNumber(L,1);
result:=0;
end;
function field_getAsString(L: Plua_State): integer; cdecl;
begin
lua_pushString(L, tfield(luaclass_getClassObject(L)).AsString);
result:=1;
end;
function field_setAsString(L: Plua_State): integer; cdecl;
begin
tfield(luaclass_getClassObject(L)).AsString:=lua_toString(L,1);
result:=0;
end;
function field_getText(L: Plua_State): integer; cdecl;
begin
lua_pushString(L, tfield(luaclass_getClassObject(L)).Text);
result:=1;
end;
function field_setText(L: Plua_State): integer; cdecl;
begin
tfield(luaclass_getClassObject(L)).Text:=lua_toString(L,1);
result:=0;
end;
function field_isNull(L: Plua_State): integer; cdecl;
begin
lua_pushboolean(L, tfield(luaclass_getClassObject(L)).IsNull);
result:=1;
end;
procedure field_addMetaData(L: PLua_state; metatable: integer; userdata: integer );
begin
component_addMetaData(L, metatable, userdata);
luaclass_addPropertyToTable(L, metatable, userdata, 'Value', field_getAsVariant, field_setAsVariant);
luaclass_addPropertyToTable(L, metatable, userdata, 'DataType', field_getDataType, nil);
luaclass_addPropertyToTable(L, metatable, userdata, 'Size', field_getSize, field_setSize);
luaclass_addPropertyToTable(L, metatable, userdata, 'AsBoolean', field_getAsBoolean, field_setAsBoolean);
luaclass_addPropertyToTable(L, metatable, userdata, 'AsByteTable', field_getAsByteTable, field_setAsByteTable);
luaclass_addPropertyToTable(L, metatable, userdata, 'AsInteger', field_getAsInteger, field_setAsInteger);
luaclass_addPropertyToTable(L, metatable, userdata, 'AsNumber', field_getAsNumber, field_setAsNumber);
luaclass_addPropertyToTable(L, metatable, userdata, 'AsString', field_getAsString, field_setAsString);
luaclass_addPropertyToTable(L, metatable, userdata, 'Text', field_getText, field_setText);
luaclass_addPropertyToTable(L, metatable, userdata, 'IsNull', field_isNull, nil);
end;
2017-04-07 01:22:10 +02:00
function fields_getCount(L: Plua_State): integer; cdecl;
begin
lua_pushInteger(L, tfields(luaclass_getClassObject(L)).Count);
result:=1;
end;
function fields_getFields(L: PLua_State): integer; cdecl;
var
fields: Tfields;
index: integer;
begin
result:=0;
fields:=luaclass_getClassObject(L);
if lua_gettop(L)>=1 then
begin
index:=lua_toInteger(L,1);
luaclass_newClass(L, fields.Fields[index]);
result:=1;
end;
end;
function fields_setFields(L: PLua_State): integer; cdecl;
var
fields: Tfields;
index: integer;
begin
result:=0;
fields:=luaclass_getClassObject(L);
if lua_gettop(L)=2 then
begin
index:=lua_toInteger(L,1);
fields.Fields[index]:=lua_ToCEUserData(L,2);
end;
end;
function fields_add(L: Plua_State): integer; cdecl;
begin
tfields(luaclass_getClassObject(L)).Add(tfield(lua_ToCEUserData(L,1)));
result:=0;
end;
function fields_clear(L: Plua_State): integer; cdecl;
begin
tfields(luaclass_getClassObject(L)).clear;
result:=0;
end;
function fields_fieldByName(L: Plua_State): integer; cdecl;
begin
luaclass_newClass(L, tfields(luaclass_getClassObject(L)).FieldByName(Lua_ToString(L,1)));
result:=1;
end;
function fields_fieldByNumber(L: Plua_State): integer; cdecl;
begin
luaclass_newClass(L, tfields(luaclass_getClassObject(L)).FieldByNumber(lua_tointeger(L,1)));
result:=1;
end;
function fields_indexOf(L: Plua_State): integer; cdecl;
begin
lua_pushinteger(L, tfields(luaclass_getClassObject(L)).IndexOf(tfield(lua_ToCEUserData(L,1))));
result:=1;
end;
procedure fields_addMetaData(L: PLua_state; metatable: integer; userdata: integer );
begin
2017-04-07 12:23:39 +02:00
object_addMetaData(L, metatable, userdata);
2017-04-07 01:22:10 +02:00
luaclass_addPropertyToTable(L, metatable, userdata, 'Count', fields_getCount, nil);
luaclass_addArrayPropertyToTable(L, metatable, userdata, 'Fields', fields_getFields, fields_setFields);
luaclass_setDefaultArrayProperty(L, metatable, userdata, fields_getFields, fields_setFields);
luaclass_addClassFunctionToTable(L, metatable, userdata, 'add', fields_add);
luaclass_addClassFunctionToTable(L, metatable, userdata, 'clear', fields_clear);
luaclass_addClassFunctionToTable(L, metatable, userdata, 'fieldByName', fields_fieldByName);
luaclass_addClassFunctionToTable(L, metatable, userdata, 'fieldByNumber', fields_fieldByNumber);
luaclass_addClassFunctionToTable(L, metatable, userdata, 'indexOf', fields_indexOf);
end;
procedure params_addMetaData(L: PLua_state; metatable: integer; userdata: integer );
begin
collection_addMetaData(L, metatable, userdata);
luaclass_addClassFunctionToTable(L, metatable, userdata, 'addParam', params_addParam);
luaclass_addArrayPropertyToTable(L, metatable, userdata, 'Items', params_getItem, params_setItem);
luaclass_setDefaultArrayProperty(L, metatable, userdata, params_getItem, params_setItem);
end;
procedure param_addMetaData(L: PLua_state; metatable: integer; userdata: integer );
begin
collectionItem_addMetaData(L, metatable, userdata);
luaclass_addPropertyToTable(L, metatable, userdata, 'AsBoolean', param_getAsBoolean, param_setAsBoolean);
luaclass_addPropertyToTable(L, metatable, userdata, 'AsByteTable', param_getAsByteTable, param_setAsByteTable);
luaclass_addPropertyToTable(L, metatable, userdata, 'AsInteger', param_getAsInteger, param_setAsInteger);
luaclass_addPropertyToTable(L, metatable, userdata, 'AsNumber', param_getAsNumber, param_setAsNumber);
luaclass_addPropertyToTable(L, metatable, userdata, 'AsString', param_getAsString, param_setAsString);
luaclass_addPropertyToTable(L, metatable, userdata, 'Text', param_getText, param_setText);
luaclass_addPropertyToTable(L, metatable, userdata, 'IsNull', param_isNull, nil);
end;
procedure dbtransaction_addMetaData(L: PLua_state; metatable: integer; userdata: integer );
begin
component_addMetaData(L, metatable, userdata);
luaclass_addClassFunctionToTable(L, metatable, userdata, 'closeDataSets', dbtransaction_closeDataSets);
luaclass_addPropertyToTable(L, metatable, userdata, 'DataBase', dbtransaction_getDataBase, dbtransaction_setDataBase);
end;
procedure sqltransaction_addMetaData(L: PLua_state; metatable: integer; userdata: integer );
begin
dbtransaction_addMetaData(L, metatable, userdata);
luaclass_addClassFunctionToTable(L, metatable, userdata, 'commit', sqltransaction_commit);
luaclass_addClassFunctionToTable(L, metatable, userdata, 'commitRetaining', sqltransaction_commitRetaining);
luaclass_addClassFunctionToTable(L, metatable, userdata, 'rollback', sqltransaction_rollback);
luaclass_addClassFunctionToTable(L, metatable, userdata, 'rollbackRetaining', sqltransaction_rollbackRetaining);
luaclass_addClassFunctionToTable(L, metatable, userdata, 'startTransaction', sqltransaction_startTransaction);
luaclass_addClassFunctionToTable(L, metatable, userdata, 'endTransaction', sqltransaction_endTransaction);
luaclass_addPropertyToTable(L, metatable, userdata, 'SQLConnection', dbtransaction_getDataBase, dbtransaction_setDataBase); //not a mistake. sqlconnection is the database
end;
procedure customconnection_addMetaData(L: PLua_state; metatable: integer; userdata: integer );
begin
component_addMetaData(L, metatable, userdata);
luaclass_addClassFunctionToTable(L, metatable, userdata, 'open', customconnection_open);
luaclass_addClassFunctionToTable(L, metatable, userdata, 'close', customconnection_close);
end;
procedure database_addMetaData(L: PLua_state; metatable: integer; userdata: integer );
begin
customconnection_addMetaData(L, metatable, userdata);
luaclass_addPropertyToTable(L, metatable, userdata, 'TransactionCount', database_getTransactionCount, nil);
end;
procedure sqlconnection_addMetaData(L: PLua_state; metatable: integer; userdata: integer );
begin
database_addMetaData(L, metatable, userdata);
luaclass_addClassFunctionToTable(L, metatable, userdata, 'startTransaction', sqlconnection_startTransaction);
luaclass_addClassFunctionToTable(L, metatable, userdata, 'endTransaction', sqlconnection_endTransaction);
luaclass_addClassFunctionToTable(L, metatable, userdata, 'executeDirect', sqlconnection_executeDirect);
2017-04-07 01:22:10 +02:00
luaclass_addClassFunctionToTable(L, metatable, userdata, 'getTableNames', sqlconnection_getTableNames);
luaclass_addClassFunctionToTable(L, metatable, userdata, 'getFieldNames', sqlconnection_getFieldNames);
end;
procedure odbcconnection_addMetaData(L: PLua_state; metatable: integer; userdata: integer );
begin
sqlconnection_addMetaData(L, metatable, userdata);
end;
procedure sqlite3connection_addMetaData(L: PLua_state; metatable: integer; userdata: integer );
begin
sqlconnection_addMetaData(L, metatable, userdata);
luaclass_addClassFunctionToTable(L, metatable, userdata, 'createDB', sqlite3connection_createDB);
luaclass_addClassFunctionToTable(L, metatable, userdata, 'dropDB', sqlite3connection_dropDB);
luaclass_addClassFunctionToTable(L, metatable, userdata, 'getInsertID', sqlite3connection_getInsertID);
end;
procedure initializeLuaSQL;
begin
lua_register(LuaVM, 'createSQLite3Connection', createSQLite3Connection);
lua_register(LuaVM, 'createODBCConnection', createODBCConnection);
lua_register(LuaVM, 'createSQLTransaction', createSQLTransaction);
2017-04-07 01:22:10 +02:00
lua_register(LuaVM, 'createSQLQuery', createSQLQuery);
lua_register(LuaVM, 'setSQLiteLibraryName', setSQLiteLibraryName);
2017-04-07 01:22:10 +02:00
end;
initialization
{$ifdef cpu64}
SQLiteLibraryName:='.\win64\sqlite3.dll';
{$else}
SQLiteLibraryName:='.\win32\sqlite3.dll';
{$endif}
luaclass_register(TODBCConnection, odbcconnection_addMetaData);
luaclass_register(TSQLite3Connection, sqlite3connection_addMetaData);
luaclass_register(TSQLConnection, sqlconnection_addMetaData);
luaclass_register(TDatabase, database_addMetaData);
luaclass_register(TCustomConnection, customconnection_addMetaData);
luaclass_register(TSQLTransaction, sqltransaction_addMetaData);
luaclass_register(TDBTransaction, dbtransaction_addMetaData);
luaclass_register(TSQLQuery, sqlquery_addMetaData);
luaclass_register(TCustomSQLQuery, customsqlquery_addMetaData);
luaclass_register(TCustomBufDataset, custombufdataset_addMetaData);
luaclass_register(TDBDataSet, dbdataset_addMetaData);
luaclass_register(TDataset, dataset_addMetaData);
luaclass_register(TParam, param_addMetaData);
luaclass_register(TParams, params_addMetaData);
2017-04-07 01:22:10 +02:00
luaclass_register(TField, field_addMetaData);
2017-04-07 12:23:39 +02:00
luaclass_register(TFields, fields_addMetaData);
2017-04-07 01:22:10 +02:00
registerclass(TSQLConnection);
registerclass(TSQLite3Connection);
registerclass(TODBCConnection);
registerclass(TSQLTransaction);
registerclass(TSQLQuery);
end.