0
當我的Sqlite數據庫中的數據添加到表時,出現此錯誤。在向數據庫插入值時,Sqlite'沒有這樣的表'錯誤
12-21 17:31:19.345: E/SQLiteLog(24127): (1) no such table: accessory_data
12-21 17:31:19.345: E/DB ERROR(24127): android.database.sqlite.SQLiteException:
no such table: accessory_data (code 1): ,
while compiling: SELECT aid, name, image, url, price
FROM accessory_data
請注意,數據庫先前是由另一種方法創建的,以便將數據添加到另一個表中。我在這裏做的只是將數據添加到同一數據庫中的不同表中。這是問題的根源嗎?
DBOperations類:
public class DBOps extends SQLiteOpenHelper {
private static final int DATABASE_VERSION = 1;
private static final String DATABASE_NAME = "jezzadb";
public String CREATE_ACC_QUERY = "CREATE TABLE " + AccessoriesTableInfo.TABLE_NAME + " (" + AccessoriesTableInfo.AID + " VARCHAR, " +
AccessoriesTableInfo.NAME + " VARCHAR, " + AccessoriesTableInfo.IMAGE + " VARCHAR, " + AccessoriesTableInfo.PRICE + " VARCHAR, " +
AccessoriesTableInfo.URL + " VARCHAR);";
public DBOps(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
// TODO Auto-generated constructor stub
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL(CREATE_ACC_QUERY);
}
public void insertAccessories(DBOps dop, Accessories a)
{
SQLiteDatabase SQ = dop.getWritableDatabase();
ContentValues cv = new ContentValues();
cv.put(AccessoriesTableInfo.AID, a.ID);
cv.put(AccessoriesTableInfo.NAME, a.Name);
cv.put(AccessoriesTableInfo.URL, a.URL);
cv.put(AccessoriesTableInfo.IMAGE, a.Image);
cv.put(AccessoriesTableInfo.PRICE, a.PRICE);
SQ.insert(AccessoriesTableInfo.TABLE_NAME, null, cv);
Log.d("Database Operations", "Inserted Accessories succesfully!");
}
public ArrayList<Accessories> getAccessories(DBOps dop)
{
ArrayList<Accessories> arr = new ArrayList<Accessories>();
SQLiteDatabase SQ = dop.getReadableDatabase();
String[] columns = {AccessoriesTableInfo.AID,AccessoriesTableInfo.NAME,AccessoriesTableInfo.IMAGE,AccessoriesTableInfo.URL,
AccessoriesTableInfo.PRICE};
Cursor CR = SQ.query(AccessoriesTableInfo.TABLE_NAME, columns, null, null, null, null, null);
CR.moveToFirst();
for(int i=0;i<CR.getCount();i++)
{
while (!CR.isAfterLast()) {
Accessories a= new Accessories();
a.ID = CR.getString(0);
a.Name = CR.getString(1);
a.URL = CR.getString(2);
a.Image = CR.getString(3);
a.PRICE = CR.getString(4);
arr.add(a);
CR.moveToNext();
}
CR.close();
break;
}
return arr;
}
AccessoriesTableInfo類:
public class AccessoriesTableData {
public AccessoriesTableData()
{
}
public static abstract class AccessoriesTableInfo implements BaseColumns
{
public static final String AID = "aid";
public static final String NAME = "name";
public static final String IMAGE = "image";
public static final String URL = "url";
public static final String PRICE = "price";
public static final String TABLE_NAME = "accessory_data";
}
}
我在做什麼錯?
哦,我看..但有沒有辦法來添加新表和新的價值,而不必放棄現有的表或刪除數據庫?它是onUpgrade()方法嗎? – Pjayness
將'private static final int DATABASE_VERSION = 1;'更改爲'private static final int DATABASE_VERSION = 2;'。通過這樣做,調用onUpgrade()。 –