All working fine now, but noticed that for the attached database I get not just the file path of the attached database, but also the journal file path and wal file path:
C:\Test\NewDB2.db3C:\Test\NewDB2.db3-journalC:\Test\NewDB2.db3-wal There is actually no journal file or wal file that I can see in that folder. For main I only get the file path of that main database. Is this behaviour as expected? Is it documented somewhere? RBS On Thu, Oct 8, 2015 at 5:18 PM, Bart Smissaert <bart.smissaert at gmail.com> wrote: > Ignore this as I know what the problem was. > I was passing a pointer to the Unicode string, but should be pointer to > 8bit ASCII string. > > RBS > > On Thu, Oct 8, 2015 at 9:58 AM, Bart Smissaert <bart.smissaert at gmail.com> > wrote: > >> OK, thanks, at least I know that the function works fine then in >> sqlite3.dll. >> Problem must be on my side then. >> >> This is the code in the Std_Call dll: >> >> SQLITE3_STDCALL_API const char * __stdcall >> sqlite3_stdcall_db_filename(sqlite3 >> *pDb, const char *zDbName) >> { >> return sqlite3_db_filename(pDb, zDbName); >> } >> >> And this is the Declare in VBA: >> >> Public Declare Function sqlite3_stdcall_db_filename Lib "SQLite3_StdCall" >> Alias "_sqlite3_stdcall_db_filename at 8" (ByVal hDBHandle As Long, ByVal >> lPtrAttachedDBName As Long) As Long >> >> Anything wrong with either of these? >> >> >> RBS >> >> >> >> >> On Thu, Oct 8, 2015 at 9:40 AM, Dan Kennedy <danielk1977 at gmail.com> >> wrote: >> >>> On 10/08/2015 03:51 AM, Bart Smissaert wrote: >>> >>>> As I understand it this should produce a filepointer to the filepath of >>>> the >>>> attached database, given the database handle of file the other database >>>> was >>>> attached to and the database name of the attached database. I checked >>>> all >>>> the return values and also did a select involving tables in both >>>> databases and all goes fine, so I can be sure that the other database is >>>> attached OK. >>>> All I get from sqlite3_db_filename is zero, so no valid file pointer. No >>>> error messages though. >>>> >>>> I am accessing sqlite3.dll (Windows 7) via a std_call dll as I am >>>> working >>>> in VBA here. >>>> >>>> Any suggestions what could be the problem? >>>> >>>> I am running 3.8.11.1 >>>> >>>> >>> The program below works here. >>> >>> I'm seeing full paths for databases "main" and "aux", and a zero-length >>> nul-terminated string for "next" (the in-memory database). >>> >>> Dan >>> >>> ----------------------------------------------------- >>> >>> >>> >>> #include <sqlite3.h> >>> #include <stdio.h> >>> #include <stdlib.h> >>> >>> int main(int argc, char **argv){ >>> int rc; >>> sqlite3 *db; >>> >>> rc = sqlite3_open("test.db", &db); >>> if( rc!=SQLITE_OK ){ >>> fprintf(stderr, "sqlite3_open: %s\n", sqlite3_errmsg(db)); >>> exit(1); >>> } >>> >>> rc = sqlite3_exec(db, "ATTACH 'other.db' AS 'aux'", 0, 0, 0); >>> if( rc!=SQLITE_OK ){ >>> fprintf(stderr, "sqlite3_exec: %s\n", sqlite3_errmsg(db)); >>> exit(1); >>> } >>> >>> rc = sqlite3_exec(db, "ATTACH ':memory:' AS 'next'", 0, 0, 0); >>> if( rc!=SQLITE_OK ){ >>> fprintf(stderr, "sqlite3_exec: %s\n", sqlite3_errmsg(db)); >>> exit(1); >>> } >>> >>> printf("main db is: %s\n", sqlite3_db_filename(db, "main")); >>> printf("aux db is: %s\n", sqlite3_db_filename(db, "aux")); >>> printf("next db is: %s\n", sqlite3_db_filename(db, "next")); >>> >>> return 0; >>> } >>> >>> _______________________________________________ >>> sqlite-users mailing list >>> sqlite-users at mailinglists.sqlite.org >>> http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users >>> >> >> >