Java 从文件打开数据库-android.database.sqlite.SQLiteException:没有这样的表
我目前正在研究如何将SQLiteDatabase用于词汇表应用程序。目前,我只是有一个测试数据库,看看它是否工作。显然,它不起作用:Java 从文件打开数据库-android.database.sqlite.SQLiteException:没有这样的表,java,android,database,sqlite,Java,Android,Database,Sqlite,我目前正在研究如何将SQLiteDatabase用于词汇表应用程序。目前,我只是有一个测试数据库,看看它是否工作。显然,它不起作用: 06-05 20:29:14.942 21532-21532/de.dev.jana.applicationtest E/AndroidRuntime: FATAL EXCEPTION: main Process: de.dev.jana.applicationtest, PID: 21532 java.lang.IllegalStateException
06-05 20:29:14.942 21532-21532/de.dev.jana.applicationtest E/AndroidRuntime: FATAL EXCEPTION: main
Process: de.dev.jana.applicationtest, PID: 21532
java.lang.IllegalStateException: Could not execute method for android:onClick
at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:293)
at android.view.View.performClick(View.java:5201)
at android.view.View$PerformClick.run(View.java:21163)
at android.os.Handler.handleCallback(Handler.java:746)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5443)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:728)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
Caused by: java.lang.reflect.InvocationTargetException
at java.lang.reflect.Method.invoke(Native Method)
at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:288)
at android.view.View.performClick(View.java:5201)
at android.view.View$PerformClick.run(View.java:21163)
at android.os.Handler.handleCallback(Handler.java:746)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5443)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:728)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
Caused by: android.database.sqlite.SQLiteException: no such table: test (code 1): , while compiling: SELECT * FROM test
at android.database.sqlite.SQLiteConnection.nativePrepareStatement(Native Method)
at android.database.sqlite.SQLiteConnection.acquirePreparedStatement(SQLiteConnection.java:887)
at android.database.sqlite.SQLiteConnection.prepare(SQLiteConnection.java:498)
at android.database.sqlite.SQLiteSession.prepare(SQLiteSession.java:588)
at android.database.sqlite.SQLiteProgram.<init>(SQLiteProgram.java:58)
at android.database.sqlite.SQLiteStatement.<init>(SQLiteStatement.java:31)
at android.database.sqlite.SQLiteDatabase.executeSql(SQLiteDatabase.java:1674)
at android.database.sqlite.SQLiteDatabase.execSQL(SQLiteDatabase.java:1605)
at de.dev.jana.applicationtest.Model.getFirstFolderName(Model.java:27)
at de.dev.jana.applicationtest.MainActivity.onButtonClick(MainActivity.java:38)
at java.lang.reflect.Method.invoke(Native Method)
at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:288)
at android.view.View.performClick(View.java:5201)
at android.view.View$PerformClick.run(View.java:21163)
at android.os.Handler.handleCallback(Handler.java:746)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5443)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:728)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
DatabaseHelper:
class DatabaseHelper extends SQLiteOpenHelper {
private static DatabaseHelper instance = null;
private DatabaseHelper(Context context) {
super(context, "test.db", null, 1);
}
public static DatabaseHelper getInstance(Context context) {
if(instance == null)
instance = new DatabaseHelper(context);
return instance;
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("PRAGMA foreign_keys=ON;");
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
}
}
在另一个类中,我尝试使用数据库中的信息。当我试图查询数据库时,我得到了异常。上面说那张桌子不存在。但它肯定存在于数据库文件中。我已经检查过多次了
当我按下按钮时,getFirstFolderName()方法会在某个点被调用
public class Model {
private SQLiteDatabase db;
public Model() {
db = MyApplication.getReadableDatabase();
}
public String getFirstFolderName() {
String query = "select * from test;";
Cursor cursor = db.rawQuery(query, null); // <- here is the problem
cursor.moveToFirst();
int columnIndex = cursor.getColumnIndex("text");
String name = cursor.getString(columnIndex);
cursor.close();
return name;
}
}
公共类模型{
专用数据库数据库;
公共模型(){
db=MyApplication.getReadableDatabase();
}
公共字符串getFirstFolderName(){
String query=“从测试中选择*”;
Cursor Cursor=db.rawQuery(query,null);//表test
包含哪些列?SQLiteOpenHelper
应该如何知道?它包含列“id”和“text”。我猜SQLiteOpenHelper从打开数据库就知道了这一点。
public class Model {
private SQLiteDatabase db;
public Model() {
db = MyApplication.getReadableDatabase();
}
public String getFirstFolderName() {
String query = "select * from test;";
Cursor cursor = db.rawQuery(query, null); // <- here is the problem
cursor.moveToFirst();
int columnIndex = cursor.getColumnIndex("text");
String name = cursor.getString(columnIndex);
cursor.close();
return name;
}
}