Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/365.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在androidstudio中打开java类中的sqlite-db-inside包文件_Java_Android_Sqlite_Package_Android Sqlite - Fatal编程技术网

如何在androidstudio中打开java类中的sqlite-db-inside包文件

如何在androidstudio中打开java类中的sqlite-db-inside包文件,java,android,sqlite,package,android-sqlite,Java,Android,Sqlite,Package,Android Sqlite,我有一个包ebooks_适配器,里面有MyArrayAdaptor java类,我想在里面调用sqlite db来导入数据,我发现在包里面我们应该使用静态方法,所以我使用了 db = SQLiteDatabase.openDatabase("myDataBase.db", null, Context.MODE_PRIVATE); 但它产生了 09-18 00:00:08.238 26784-26784/com.dhilip.college E/SQLiteLog: (14) cannot op

我有一个包ebooks_适配器,里面有MyArrayAdaptor java类,我想在里面调用sqlite db来导入数据,我发现在包里面我们应该使用静态方法,所以我使用了

db = SQLiteDatabase.openDatabase("myDataBase.db", null, Context.MODE_PRIVATE);
但它产生了

09-18 00:00:08.238 26784-26784/com.dhilip.college E/SQLiteLog: (14) cannot open file at line 31364 of [2ef4f3a5b1]
09-18 00:00:08.238 26784-26784/com.dhilip.college E/SQLiteLog: (14) os_unix.c:31364: (2) open(//myDataBase.db) - 
09-18 00:00:08.251 26784-26784/com.dhilip.college E/SQLiteDatabase: Failed to open database 'myDataBase.db'.
android.database.sqlite.SQLiteCantOpenDatabaseException: unknown error (code 14): Could not open database
    at android.database.sqlite.SQLiteConnection.nativeOpen(Native Method)
    at android.database.sqlite.SQLiteConnection.open(SQLiteConnection.java:212)
    at android.database.sqlite.SQLiteConnection.open(SQLiteConnection.java:196)
    at android.database.sqlite.SQLiteConnectionPool.openConnectionLocked(SQLiteConnectionPool.java:463)
    at android.database.sqlite.SQLiteConnectionPool.open(SQLiteConnectionPool.java:185)
    at android.database.sqlite.SQLiteConnectionPool.open(SQLiteConnectionPool.java:177)
    at android.database.sqlite.SQLiteDatabase.openInner(SQLiteDatabase.java:836)
    at android.database.sqlite.SQLiteDatabase.open(SQLiteDatabase.java:821)
    at android.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:714)
    at android.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:689)
    at com.dhilip.college.ebooks_adapter.MyArrayAdaptor.getView(MyArrayAdaptor.java:69)
    at android.widget.AbsListView.obtainView(AbsListView.java:2474)
    at android.widget.ListView.makeAndAddView(ListView.java:1920)
    at android.widget.ListView.fillDown(ListView.java:717)
    at android.widget.ListView.fillFromTop(ListView.java:778)
    at android.widget.ListView.layoutChildren(ListView.java:1701)
    at android.widget.AbsListView.onLayout(AbsListView.java:2235)
    at android.view.View.layout(View.java:16969)
    at android.view.ViewGroup.layout(ViewGroup.java:5583)
    at android.support.design.widget.HeaderScrollingViewBehavior.layoutChild(HeaderScrollingViewBehavior.java:131)
    at android.support.design.widget.ViewOffsetBehavior.onLayoutChild(ViewOffsetBehavior.java:42)
    at android.support.design.widget.AppBarLayout$ScrollingViewBehavior.onLayoutChild(AppBarLayout.java:1367)
    at android.support.design.widget.CoordinatorLayout.onLayout(CoordinatorLayout.java:849)
    at android.view.View.layout(View.java:16969)
    at android.view.ViewGroup.layout(ViewGroup.java:5583)
    at android.widget.FrameLayout.layoutChildren(FrameLayout.java:396)
    at android.widget.FrameLayout.onLayout(FrameLayout.java:333)
    at android.view.View.layout(View.java:16969)
    at android.view.ViewGroup.layout(ViewGroup.java:5583)
    at android.support.v7.widget.ActionBarOverlayLayout.onLayout(ActionBarOverlayLayout.java:437)
    at android.view.View.layout(View.java:16969)
    at android.view.ViewGroup.layout(ViewGroup.java:5583)
    at android.widget.FrameLayout.layoutChildren(FrameLayout.java:396)
    at android.widget.FrameLayout.onLayout(FrameLayout.java:333)
    at android.view.View.layout(View.java:16969)
    at android.view.ViewGroup.layout(ViewGroup.java:5583)
    at android.widget.LinearLayout.setChildFrame(LinearLayout.java:2001)
    at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1844)
    at android.widget.LinearLayout.onLayout(LinearLayout.java:1753)
    at android.view.View.layout(View.java:16969)
    at android.view.ViewGroup.layout(ViewGroup.java:5583)
    at android.widget.FrameLayout.layoutChildren(FrameLayout.java:396)
    at android.widget.FrameLayout.onLayout(FrameLayout.java:333)
    at com.android.internal.policy.PhoneWindow$DecorView.onLayout(PhoneWindow.java:2728)
    at android.view.View.layout(View.java:16969)
    at android.view.ViewGroup.layout(ViewGroup.java:5583)
    at android.view.ViewRootImpl.performLayout(ViewRootImpl.java:2552)
    at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2255)
    at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1321)
    at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6708)
    at android.view.Choreographer$CallbackRecord.run(Choreographer.java:894)
    at android.view.Choreographer.doCallbacks(Choreographer.java:696)
    at android.view.Choreographer.doFrame(Choreographer.java:631)
    at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:880)
    at android.os.Handler.handleCallback(Handler.java:822)
    at android.os.Handler.dispatchMessage(Handler.java:104)
    at android.os.Looper.loop(Looper.java:207)
    at android.app.ActivityThread.mai
09-18 00:00:08.252 26784-26784/com.dhilip.college D/AndroidRuntime: Shutting down VM

好的,您需要一个DBHelper类和一个在任何其他活动(类)中使用DB函数的设计,您可以调用DB,说最好处理DBHelper类中的所有DB函数,您知道CRUD函数

因此,首先在DBHelper中定义用于使用数据库的变量` static SQLiteDatabase db; 现在让我们假设我们想在MainActivity中向数据库中的表添加一些数据,我们用此代码定义“helper”和“db”

private DBHelper helper;
private SQLiteDatabase db;
helper = new DBHelper(this);
public void doAdd() {// Adds Master Password to TABLE_PW

    db = helper.getWritableDatabase();
    String password = etPW.getText().toString().trim();
    ContentValues cv = new ContentValues();
    cv.put( Col_MPW,password);
    db.insert( TABLE_PW,null,cv);

    etPW.setText("");
    etCPW.setText("");
    onLoad();
    db.close();
}
因此,如果要引用和使用MainActivity中DBHelper类中定义的项目,那么现在还要从DBHelper类导入一个项目

import static <package.name.goes.here>.DBHelper.TABLE_PW;
import static.DBHelper.TABLE_PW;
使用

 db = context.openOrCreateDatabase("myDataBase.db",MODE_PRIVATE,null);
而不是

 db = SQLiteDatabase.openDatabase("myDataBase.db", null, Context.MODE_PRIVATE);
它对我有用;)


这对我有用。在我的情况下,我正在使用
WorkManager打开
数据库

请发布整个错误stacktrace,它包含有价值的信息。@pleft编辑了帖子:)请尝试完整路径,而不仅仅是数据库名。db=context.openOrCreateDatabase(“myDataBase.db”,MODE_PRIVATE,null);这很管用,兄弟
getApplicationContext().openOrCreateDatabase("myDB", Context.MODE_PRIVATE, null);