Ich habe alle Beiträge zu diesem Problem auf Stack-Überlauf gegangen, aber nicht in der Lage, irgendeine Lösung zu bekommen, die ausgearbeitet. Ich verwende sqlite datebase in Android, um Daten zu speichern, aber jedes Mal, wenn ich es versuchte, wirft einen Fehler, dass Tabelle keine solche Spalte haben.android.database.sqlite.SQLiteException: Tabelle orderTime hat keine Spalte mit dem Namen product_price
// Code für Datenbankklasse
public class demo extends SQLiteOpenHelper {
// All Static variables
// Database Version
private static final int DATABASE_VERSION = 1;
// Database Name
private static final String DATABASE_NAME = "orderTimeManager";
// Contacts table name
private static final String TABLE_ORDER = "orderTime";
// Contacts Table Columns names
private static final String KEY_ID = "id";
private static final String PRODUCT_ID = "product_id";
private static final String PRODUCT_NAME = "product_name";
private static final String PRODUCT_DETAIL = "product_detail";
private static final String PRODUCT_TYPE = "product_type";
private static final String PRODUCT_PRICE = "product_price";
public demo(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
String CREATE_ORDER_TABLE = "CREATE TABLE " + TABLE_ORDER + "("
+ KEY_ID + " INTEGER PRIMARY KEY,"
+ PRODUCT_NAME + " TEXT," + PRODUCT_DETAIL + " TEXT,"
+ PRODUCT_TYPE + " TEXT,"
+ PRODUCT_PRICE + " TEXT" + ")";
db.execSQL(CREATE_ORDER_TABLE);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("DROP TABLE IF EXISTS " + TABLE_ORDER);
// Create tables again
onCreate(db);
}
// Adding new order
public void addOrder(ProductModel object) {
SQLiteDatabase db = this.getWritableDatabase();
ContentValues values = new ContentValues();
// Contact Name
values.put(PRODUCT_NAME, object.getProductName()); // Contact Phone Number
values.put(PRODUCT_DETAIL, object.getProductDetail());
values.put(PRODUCT_TYPE, object.getProductType());
values.put(PRODUCT_PRICE, object.getProductType());
// Inserting Row
db.insert(TABLE_ORDER, null, values);
db.close(); // Closing database connection
}
// Getting All order
public List<ProductModel> getAllOrders() {
List<ProductModel> orderList = new ArrayList<ProductModel>();
// Select All Query
String selectQuery = "SELECT * FROM " + TABLE_ORDER;
SQLiteDatabase db = this.getWritableDatabase();
Cursor cursor = db.rawQuery(selectQuery, null);
// looping through all rows and adding to list
if (cursor.moveToFirst()) {
do {
ProductModel object = new ProductModel();
object.setProductId(cursor.getString(0));
object.setProductName((cursor.getString(1)));
object.setProductDetail(cursor.getString(2));
object.setProductType(cursor.getString(3));
object.setProductPrice(Integer.parseInt(cursor.getString(4)));
// Adding contact to list
orderList.add(object);
} while (cursor.moveToNext());
}
// return contact list
return orderList;
}
// Aufruf Datenbank in einer anderen Klasse Daten hinzufügen
JSONObject ob1 = jsonArray.getJSONObject(i);
{
String productId = ob1.getString("pkproductId");
String productName = ob1.getString("name");
String productType = ob1.getString("productType");
String productPrice = ob1.getString("price");
String productDetails = ob1.getString("details");
Log.d(TAG, "Inserting");
db.addOrder(new ProductModel(productName,productDetails,productType,Integer.parseInt(productPrice)));
}
// Product Model
public ProductModel(String productName, String productDetail, String productType, int productPrice) {
this.productId = productId;
this.productName = productName;
this.productDetail = productDetail;
this.productPrice = productPrice;
this.productType = productType;
}
versuchen Sie, die DATABASE_VERSION = 1 zu ändern; zu 2: und dann deine App deinstallieren und neu installieren. Hoffe, das hilft –
String productPrice in ProductModel verwenden und Integer.parseInt (aus db.addOrder. Entfernen, weil Ihre Datenbank mit TEXT-Datentyp –
haben Sie Ihre Tabellenstruktur nach dem Ausführen Ihrer App geändert ?. So ist dann Ihre onCreate wird nicht ausgeführt, es sei denn, Sie deinstallieren/neu installieren Sie Ihre App. Eine andere Option ist 'onUpgrade()' Methode verwenden –