C catyinwong Active Member Licensed User Longtime User Oct 6, 2018 #1 Found a .db resource from the thread : https://www.b4x.com/android/forum/t...-a-word-is-a-noun-verb-etc.13502/#post-617339, copied to the Direct Assets but then the app says it doesn't exist. Code: Copy Logger connected to: samsung SM-G6100 --------- beginning of main Copying updated assets files (2) ** Activity (main) Create, isFirst = true ** Error occurred on line: 52 (Main) android.database.sqlite.SQLiteCantOpenDatabaseException: unknown error (code 1294): Could not open database ################################################################# Error Code : 1294 (SQLITE_CANTOPEN_ENOENT) Caused By : Specified directory or database file does not exist. (unknown error (code 1294): Could not open database) ################################################################# at android.database.sqlite.SQLiteConnection.nativeOpen(Native Method) at android.database.sqlite.SQLiteConnection.open(SQLiteConnection.java:242) at android.database.sqlite.SQLiteConnection.open(SQLiteConnection.java:203) at android.database.sqlite.SQLiteConnectionPool.openConnectionLocked(SQLiteConnectionPool.java:518) at android.database.sqlite.SQLiteConnectionPool.open(SQLiteConnectionPool.java:209) at android.database.sqlite.SQLiteConnectionPool.open(SQLiteConnectionPool.java:181) at android.database.sqlite.SQLiteDatabase.openInner(SQLiteDatabase.java:1156) at android.database.sqlite.SQLiteDatabase.open(SQLiteDatabase.java:1101) at android.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:832) at android.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:807) at anywheresoftware.b4a.sql.SQL.Initialize(SQL.java:44) at FordSoft.b4a.AICWords.main._activity_create(main.java:433)
Found a .db resource from the thread : https://www.b4x.com/android/forum/t...-a-word-is-a-noun-verb-etc.13502/#post-617339, copied to the Direct Assets but then the app says it doesn't exist. Code: Copy Logger connected to: samsung SM-G6100 --------- beginning of main Copying updated assets files (2) ** Activity (main) Create, isFirst = true ** Error occurred on line: 52 (Main) android.database.sqlite.SQLiteCantOpenDatabaseException: unknown error (code 1294): Could not open database ################################################################# Error Code : 1294 (SQLITE_CANTOPEN_ENOENT) Caused By : Specified directory or database file does not exist. (unknown error (code 1294): Could not open database) ################################################################# at android.database.sqlite.SQLiteConnection.nativeOpen(Native Method) at android.database.sqlite.SQLiteConnection.open(SQLiteConnection.java:242) at android.database.sqlite.SQLiteConnection.open(SQLiteConnection.java:203) at android.database.sqlite.SQLiteConnectionPool.openConnectionLocked(SQLiteConnectionPool.java:518) at android.database.sqlite.SQLiteConnectionPool.open(SQLiteConnectionPool.java:209) at android.database.sqlite.SQLiteConnectionPool.open(SQLiteConnectionPool.java:181) at android.database.sqlite.SQLiteDatabase.openInner(SQLiteDatabase.java:1156) at android.database.sqlite.SQLiteDatabase.open(SQLiteDatabase.java:1101) at android.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:832) at android.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:807) at anywheresoftware.b4a.sql.SQL.Initialize(SQL.java:44) at FordSoft.b4a.AICWords.main._activity_create(main.java:433)
npsonic Active Member Licensed User Oct 6, 2018 #2 Did you tried to use db from assets? That will not work. You must copy it to DirDefaultExternal, before initializing SQL. Code: Copy If FirstTime Then If Not(File.Exists(File.DirDefaultExternal, "wordsdb.db")) Then File.Copy(File.DirAssets, "wordsdb.db",File.DirDefaultExternal, "wordsdb.db") SQL1.Initialize(File.DirDefaultExternal, "wordsdb.db", True) End If Also I'm not sure how that example should have worked. You can't just swap the database file while it's in use. Upvote 0
Did you tried to use db from assets? That will not work. You must copy it to DirDefaultExternal, before initializing SQL. Code: Copy If FirstTime Then If Not(File.Exists(File.DirDefaultExternal, "wordsdb.db")) Then File.Copy(File.DirAssets, "wordsdb.db",File.DirDefaultExternal, "wordsdb.db") SQL1.Initialize(File.DirDefaultExternal, "wordsdb.db", True) End If Also I'm not sure how that example should have worked. You can't just swap the database file while it's in use.
KMatle Expert Licensed User Longtime User Oct 6, 2018 #3 Additionally: File.DirAssets is write protected. When using SQlite (or other db's) there are usually two options: 1. Copy a db like you did 2. Create the db with all tables and insert some basic rows (e.g. CREATE TABLE xxxx IF NOT EXISTS....) I use option 2 for all of my apps, so I have control over it. Imagine you need to update your app. Copying is then not an option because you would overwrite the existing db and the data in it. By creating, checking if exists and perhaps migrating some data by code you have all options when you update. Upvote 0
Additionally: File.DirAssets is write protected. When using SQlite (or other db's) there are usually two options: 1. Copy a db like you did 2. Create the db with all tables and insert some basic rows (e.g. CREATE TABLE xxxx IF NOT EXISTS....) I use option 2 for all of my apps, so I have control over it. Imagine you need to update your app. Copying is then not an option because you would overwrite the existing db and the data in it. By creating, checking if exists and perhaps migrating some data by code you have all options when you update.
C catyinwong Active Member Licensed User Longtime User Oct 6, 2018 #4 npsonic said: Did you tried to use db from assets? That will not work. You must copy it to DirDefaultExternal, before initializing SQL. Code: Copy If FirstTime Then If Not(File.Exists(File.DirDefaultExternal, "wordsdb.db")) Then File.Copy(File.DirAssets, "wordsdb.db",File.DirDefaultExternal, "wordsdb.db") SQL1.Initialize(File.DirDefaultExternal, "wordsdb.db", True) End If Also I'm not sure how that example should have worked. You can't just swap the database file while it's in use. Click to expand... KMatle said: Additionally: File.DirAssets is write protected. When using SQlite (or other db's) there are usually two options: 1. Copy a db like you did 2. Create the db with all tables and insert some basic rows (e.g. CREATE TABLE xxxx IF NOT EXISTS....) I use option 2 for all of my apps, so I have control over it. Imagine you need to update your app. Copying is then not an option because you would overwrite the existing db and the data in it. By creating, checking if exists and perhaps migrating some data by code you have all options when you update. Click to expand... Copied the database to External as npsonic suggested. It worked. Thanks a lot! Upvote 0
npsonic said: Did you tried to use db from assets? That will not work. You must copy it to DirDefaultExternal, before initializing SQL. Code: Copy If FirstTime Then If Not(File.Exists(File.DirDefaultExternal, "wordsdb.db")) Then File.Copy(File.DirAssets, "wordsdb.db",File.DirDefaultExternal, "wordsdb.db") SQL1.Initialize(File.DirDefaultExternal, "wordsdb.db", True) End If Also I'm not sure how that example should have worked. You can't just swap the database file while it's in use. Click to expand... KMatle said: Additionally: File.DirAssets is write protected. When using SQlite (or other db's) there are usually two options: 1. Copy a db like you did 2. Create the db with all tables and insert some basic rows (e.g. CREATE TABLE xxxx IF NOT EXISTS....) I use option 2 for all of my apps, so I have control over it. Imagine you need to update your app. Copying is then not an option because you would overwrite the existing db and the data in it. By creating, checking if exists and perhaps migrating some data by code you have all options when you update. Click to expand... Copied the database to External as npsonic suggested. It worked. Thanks a lot!