Dhilip Kumar
Dhilip Kumar

Reputation: 33

how to open sqlite db inside package file in java class in android studio

i have a package ebooks_adaptor and MyArrayAdaptor java class inside in it i wanna invoke sqlite db inside that for importing data into that i found that inside the package we should use static method so i used

db = SQLiteDatabase.openDatabase("myDataBase.db", null, Context.MODE_PRIVATE);

but it generated

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

Upvotes: 0

Views: 716

Answers (3)

4kev90
4kev90

Reputation: 1

getApplicationContext().openOrCreateDatabase("myDB", Context.MODE_PRIVATE, null);

This worked for me. In my case, I'm opening the database with WorkManager.

Upvotes: 0

Dhilip Kumar
Dhilip Kumar

Reputation: 33

using

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

Instead of

 db = SQLiteDatabase.openDatabase("myDataBase.db", null, Context.MODE_PRIVATE);

It worked for me ;)

Upvotes: 1

Vector
Vector

Reputation: 3235

OK you need this design a DBHelper Class and the in any other Activity (Class) you want to use the functions of the DB you can make a call to the DB That said it is best if you handle all DB functions in the DBHelper Class you know CRUD functions

So first in your DBHelper define the variable for using the database`static SQLiteDatabase db; Now lets say we want to Add some data to a table in the database in the MainActivity we define the "helper" and the "db" with this code

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();
}

So now one more item to import from the DBHelper Class if you what to reference and use that item as defined in the DBHelper Class in the MainActivity

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

Upvotes: 2

Related Questions