2017-02-22 3 views
0

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; 
} 
+0

versuchen Sie, die DATABASE_VERSION = 1 zu ändern; zu 2: und dann deine App deinstallieren und neu installieren. Hoffe, das hilft –

+0

String productPrice in ProductModel verwenden und Integer.parseInt (aus db.addOrder. Entfernen, weil Ihre Datenbank mit TEXT-Datentyp –

+0

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 –

Antwort

1

try Schritt für Schritt

1) versuchen, die Database_Version zu ändern = 1; zu 2: und dann erneut installieren

2) verwenden Sie String productPrice in ProductModel und entfernen Sie Integer.parseInt( von db.addOrder. da Ihre Datenbank

TEXT-Datentyp mit

3) ändern Sie diese Zeile

values.put(PRODUCT_TYPE, object.getProductType()); 
values.put(PRODUCT_PRICE, object.getProductPrice()); 

hoffen, dass es Ihnen hilft. Wenn dies nicht hilft, fühlen Sie sich frei, das Problem zu stellen

+1

App uninstall ist nicht notwendig, wenn du die db-version änderst. – fluffyBatman

+0

ok @fluffyBatman geändert –

+0

ich denke nur 'klare daten' hätten genug sein sollen @fluffyBatman, oder? – Nilabja

Verwandte Themen