You are not instantiating your classes correctly. In form_main, instead of
DBAccess.Create(Self);
you should have
DBAccess:=TDBAccess.Create(Self);
Likewise in class_db_access in place of
SQLite3Connection.Create(AOwner);
you should have
SQLite3Connection:= TSQLite3Connection.Create(AOwner);
The same applies to your 'creation' of SQLTransaction.
You've also omitted to call the inherited Create constructor in TDBAccess.Create. The first line of TDBAccess.Create after begin should be
inherited Create;
I also recommend you change the declaration of DBAccess to
var DBAccess: TDBAccess=nil;
It is never be wrong to initialise a variable, and with pointer variables especially, it can often save your bacon when you realise you've got an unexpected nil value somewhere later in the program.