我对SQLite有点新意,所以请耐心等待。我正在创建一个表并尝试从中访问数据,但不知怎的,我收到了这个错误。
android.database.sqlite.SQLiteException: no such table: table_image (code 1): , while compiling: SELECT image_data FROM table_image WHERE image_name= ' a '
错误发生后我做的事情:
1。)卸载应用程序并重新安装。 2.)检查表创建代码中的空格。它看起来对我来说。
我不确定为什么会出现这个错误。有人可以帮帮我吗。 谢谢!!
我的DatabaseHelper类
public class DatabaseHelper extends SQLiteOpenHelper {
// Database Version
private static final int DATABASE_VERSION = 1;
// Database Name
private static final String DATABASE_NAME = "database_name";
// Table Names
public static final String DB_TABLE = "table_image";
// column names
public static final String KEY_NAME = "image_name";
public static final String KEY_IMAGE = "image_data";
// Table create statement
private static final String CREATE_TABLE_IMAGE = "CREATE TABLE " + DB_TABLE + " ("+
KEY_NAME + " TEXT, " +
KEY_IMAGE + " BLOB"+")";
public DatabaseHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
// creating table
db.execSQL(CREATE_TABLE_IMAGE);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// on upgrade drop older tables
db.execSQL("DROP TABLE IF EXISTS " + DB_TABLE);
// create new table
onCreate(db);
}
}
在另一个类中向db添加内容
// Calling addEntry
addEntry(name, img);
// Function to add entry
public void addEntry( String name, byte[] image) throws SQLiteException {
ContentValues cv = new ContentValues();
cv.put(DatabaseHelper.KEY_NAME, name);
cv.put(DatabaseHelper.KEY_IMAGE, image);
database.insert(DatabaseHelper.DB_TABLE, null, cv);
}
然后我想要从中获取数据。
SQLiteDatabase db = openOrCreateDatabase(DatabaseHelper.DB_TABLE, MODE_PRIVATE, null);
String selectQuery = "SELECT image_data FROM "+DatabaseHelper.DB_TABLE+" WHERE image_name= ' "+"a"+" ' ";
Cursor cursor = db.rawQuery(selectQuery,null);
byte[] image = cursor.getBlob(1);
答案 0 :(得分:1)
openOrCreateDatabase()
未使用SQLiteOpenHelper
您拥有表创建代码的地方。
要获得由SQLiteDatabase
管理的SQLiteOpenHelper
,请致电,例如你的助手对象上有getWritableDatabase()
。
修复之后,再次卸载应用程序以删除由openOrCreateDatabase()
创建的空数据库。
答案 1 :(得分:0)
您是否尝试过卸载应用并再次运行?
错误说"没有这样的表:table_image",如果您使用数量较少的数据库测试应用程序并稍后引入表格,则会出现这种情况。
一旦您使用附加表重新启动应用程序,就会出现旧版本的DB,并且不会调用DBHelper的onCreate,并且不会在您的数据库中添加新表。
卸载应用程序将清除以前的任何DB实例,并且将再次调用onCreate,您将从一个新表开始。