Then ExecuteDirect is the "wrong" method.
use "execsql" (protected method)
Look in sqlite3conn in line 927
procedure TSQLite3Connection.execsql(const asql: string);
var
err : pchar;
str1 : string;
res : integer;
begin
err:= nil;
Res := sqlite3_exec(fhandle,pchar(asql),nil,nil,@err);
if err <> nil then
begin
str1:= strpas(err);
sqlite3_free(err);
end;
if (res<>sqlite_ok) then
databaseerror(str1);
end;
EDIT: Or better said: Use "execsql" as a template.
Write a Class helper for TSQLite3Connection with a Public (or whatever scope) Procedure called "ExecSQLiteDirect" (or whatever), using the code from "execsql"
I think you can see, it's basically the last line of "execsql" you would have to adjust