Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/360.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
Java 从文件打开数据库-android.database.sqlite.SQLiteException:没有这样的表_Java_Android_Database_Sqlite - Fatal编程技术网

Java 从文件打开数据库-android.database.sqlite.SQLiteException:没有这样的表

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

我目前正在研究如何将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: 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;

}
}