Reputation: 33
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
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
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
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