Добрый день!
У меня проблемы с внедрением базы данных в мое приложение.Проблема, которая сбивает меня с толку, заключается в том, что я импортировал базу данных с именем itemsDB, которая работала для меня.Если я использую любую другую базу данных (давайте поговорим о myDB.db ), у меня возникнет проблема с несуществующим каталогом.
Кажется, что у многих есть такая проблема, но я проверяю, существует ли БД в Проводнике файлов Advice, и это:

Таким образом, это исключает большинство проблем, рассмотренных в других постах.
Поэтому я сказал, что все работает с itemDB , это означает, что если я использую:
private static String DB_Name = "itemsDB.db";
private String DB_table = "Items_neu";
все работает.
Если я захочу использовать свой новый банк данных «myDB.db», я не найду свой новый ресурс на устройстве.Я проверил:
Cursor check;
check = db.rawQuery("SELECT name FROM sqlite_master WHERE type='table'", null);
if (check.moveToFirst()) {
while ( !check.isAfterLast() ) {
Toast.makeText(mContext, "Table Name=> "+check.getString(0), Toast.LENGTH_LONG).show();
Log.e("table name:", check.getString(0));
check.moveToNext();
}
}
Что дает только "android_metadata" в качестве единственной таблицы.Для myItem.db я нахожу правильную таблицу, которая Item_neu также.
Давайте проанализируем мой код сейчас, пожалуйста:
public class DBHelper extends SQLiteOpenHelper {
private static String DB_Path ="";
private static String DB_Name = "myDB.db";
// private static String DB_Name = "itemsDB.db";
private String DB_table = "tableItems";
// private String DB_table = "Items_neu";
private SQLiteDatabase mDataBase;
private Context mContext = null;
public DBHelper(Context context) {
super(context, DB_Name, null, 1);
DB_Path = "/data/data/"+ context.getPackageName()+"/databases/";
this.mContext = context;
}
Я отредактировал свой метод checkDataBase, который вы можете найти в конце поста.
The logchat gives me the following errors: (updated)
2018-10-19 16:32:56.437 1053-1053/com.example.chris.projectartifact E/Does DB exsist?:: Yes it does indeed exsits Christian!!!
2018-10-19 16:32:58.157 1053-1053/com.example.chris.projectartifact E/table name:: android_metadata
2018-10-19 16:32:58.158 1053-1053/com.example.chris.projectartifact E/SQLiteLog: (1)
2018-10-19 16:32:58.161 1053-1053/com.example.chris.projectartifact E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.chris.projectartifact, PID: 1053
android.database.sqlite.SQLiteException: no such table: tableItems (Sqlite code 1): , while compiling: SELECT * FROM tableItems, (OS error - 2:No such file or directory)
at android.database.sqlite.SQLiteConnection.nativePrepareStatement(Native Method)
at android.database.sqlite.SQLiteConnection.acquirePreparedStatement(SQLiteConnection.java:925)
at android.database.sqlite.SQLiteConnection.prepare(SQLiteConnection.java:536)
at android.database.sqlite.SQLiteSession.prepare(SQLiteSession.java:603)
at android.database.sqlite.SQLiteProgram.<init>(SQLiteProgram.java:63)
at android.database.sqlite.SQLiteQuery.<init>(SQLiteQuery.java:37)
at android.database.sqlite.SQLiteDirectCursorDriver.query(SQLiteDirectCursorDriver.java:44)
at android.database.sqlite.SQLiteDatabase.rawQueryWithFactory(SQLiteDatabase.java:1397)
at android.database.sqlite.SQLiteDatabase.rawQuery(SQLiteDatabase.java:1331)
at com.example.chris.projectartifact.DBHelper.getAllItems(DBHelper.java:181)
at com.example.chris.projectartifact.bb_Items.itemActivity$2.onClick(itemActivity.java:126)
at android.view.View.performClick(View.java:6291)
at android.widget.CompoundButton.performClick(CompoundButton.java:135)
at android.view.View$PerformClick.run(View.java:24931)
at android.os.Handler.handleCallback(Handler.java:808)
at android.os.Handler.dispatchMessage(Handler.java:101)
at android.os.Looper.loop(Looper.java:166)
at android.app.ActivityThread.main(ActivityThread.java:7425)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:245)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:921)
2018-10-19 16:32:58.761 2862-2862/com.example.chris.projectartifact E/MemoryLeakMonitorManager: MemoryLeakMonitor.jar is not exist!
2018-10-19 16:32:58.764 2862-2862/com.example.chris.projectartifact E/Minikin: Could not get cmap table size!
Подводя итог:
- Я не могу редактировать новые базы данных в моем приложении
- Каждая новая база данных выдает ошибку, что она не является существующим каталогом
Если по каким-то причинам некоторые из них могут помочь мне с моимБорьба, я был бы очень рад этому.
Редактировать: Вот некоторый прогресс, который я сделал сам.Я отредактировал новый CheckDataBase, который выдает, что база данных существует, и она просто не может найти таблицу
private boolean checkDataBase_new() {
File databasePath = mContext.getDatabasePath(DB_Name);
if(databasePath.exists()){
Log.e("Does DB exsist?:","Yes it does indeed exsits Christian!!!");
}else{
Log.e("Does DB exsist?:","No that is causing the issue!");
}
/* Thoughts: So the DB Path for myDB exists, and we can find it. But there is just no readable table! */
return databasePath.exists();
}
С наилучшими пожеланиями CG