Error inserting Android
Создаю БД "Orders" где должны быть колонны Fullname,Date,Address,ConfectionaryName,Filling,Quantity. Но проблема у меня в
2020-03-17 14:11:37.494 620-620/app.assem.lavillasweets E/SQLiteDatabase: Error inserting date=a Filling=a confectionaryName=a Fullname=a Quantity=1 Address=a
android.database.sqlite.SQLiteException: table orders has no column named date (code 1): , while compiling: INSERT INTO orders(date,Filling,confectionaryName,Fullname,Quantity,Address) VALUES (?,?,?,?,?,?)
at android.database.sqlite.SQLiteConnection.nativePrepareStatement(Native Method)
at android.database.sqlite.SQLiteConnection.acquirePreparedStatement(SQLiteConnection.java:889)
at android.database.sqlite.SQLiteConnection.prepare(SQLiteConnection.java:500)
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.insertWithOnConflict(SQLiteDatabase.java:1470)
at android.database.sqlite.SQLiteDatabase.insert(SQLiteDatabase.java:1343)
at Data.DatabaseHandler.addOrder(DatabaseHandler.java:56)
at app.assem.lavillasweets.OrderActivity.onClick(OrderActivity.java:45)
at android.view.View.performClick(View.java:5619)
at android.view.View$PerformClick.run(View.java:22298)
at android.os.Handler.handleCallback(Handler.java:754)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:165)
at android.app.ActivityThread.main(ActivityThread.java:6375)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:912)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:802)
DatabaseHandler.java
package Data;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import androidx.annotation.Nullable;
import java.util.ArrayList;
import java.util.List;
import Model.Order;
import Util.Util;
public class DatabaseHandler extends SQLiteOpenHelper {
public DatabaseHandler(Context context) {
super(context, Util.DATABASE_NAME, null, Util.DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
onUpgrade(db,1,2);
String CREATE_ORDERS_TABLE = "CREATE TABLE " + Util.TABLE_NAME + " (" +
Util.KEY_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " +
Util.KEY_FULLNAME + " TEXT, " +
Util.KEY_ADDRESS + " TEXT, " +
Util.KEY_DATE + " TEXT, " +
Util.KEY_FILLING + " TEXT, " +
Util.KEY_CONFECTIONARY_NAME + " TEXT, " +
Util.KEY_QUANTITY + " TEXT" + ")";
db.execSQL(CREATE_ORDERS_TABLE);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("DROP TABLE IF EXISTS " + Util.TABLE_NAME);
onCreate(db);
}
public void addOrder(Order order) {
SQLiteDatabase db = this.getWritableDatabase();
ContentValues contentValues = new ContentValues();
contentValues.put(Util.KEY_FULLNAME, order.getFullname());
contentValues.put(Util.KEY_ADDRESS, order.getAddress());
contentValues.put(Util.KEY_DATE, order.getDate());
contentValues.put(Util.KEY_FILLING, order.getFilling());
contentValues.put(Util.KEY_CONFECTIONARY_NAME, order.getConfectionaryName());
contentValues.put(Util.KEY_QUANTITY, order.getQuantity());
db.insert(Util.TABLE_NAME, null, contentValues);
db.close();
}
public Order getOrder(int id) {
SQLiteDatabase db = this.getReadableDatabase();
Cursor cursor = db.query(Util.TABLE_NAME, new String[]{Util.KEY_ID, Util.KEY_FULLNAME, Util.KEY_ADDRESS, Util.KEY_DATE,
Util.KEY_FILLING, Util.KEY_CONFECTIONARY_NAME, Util.KEY_QUANTITY}, Util.KEY_ID + "=?", new String[]{String.valueOf(id)},
null, null, null, null);
if (cursor != null) {
cursor.moveToFirst();
}
Order order = new Order((Integer.parseInt(cursor.getString(0))), cursor.getString(1),
cursor.getString(2), cursor.getString(3), cursor.getString(4),
cursor.getString(5), cursor.getString(6));
return order;
}
public List<Order> getAllOrders() {
SQLiteDatabase db = this.getReadableDatabase();
List<Order> orderList = new ArrayList<>();
String selectAllOrders = "SELECT * FROM " + Util.TABLE_NAME;
Cursor cursor = db.rawQuery(selectAllOrders, null);
if (cursor.moveToFirst()) {
do {
Order order = new Order();
order.setId(Integer.parseInt(cursor.getString(0)));
order.setFullname(cursor.getString(1));
order.setAddress(cursor.getString(2));
order.setDate(cursor.getString(3));
order.setFilling(cursor.getString(4));
order.setConfectionaryName(cursor.getString(5));
order.setQuantity(cursor.getString(6));
orderList.add(order);
} while (cursor.moveToNext());
}
return orderList;
}
}
Order.java
package Model;
public class Order {
private int id;
private String fullname;
private String address;
private String date;
private String filling;
private String confectionaryName;
private String quantity;
public Order(){
}
public Order(int id, String fullname, String address, String date, String filling, String confectionaryName, String quantity) {
this.id = id;
this.fullname = fullname;
this.address = address;
this.date = date;
this.filling = filling;
this.confectionaryName = confectionaryName;
this.quantity = quantity;
}
public Order(String fullname, String address, String date, String filling, String confectionaryName, String quantity) {
this.fullname = fullname;
this.address = address;
this.date = date;
this.filling = filling;
this.confectionaryName = confectionaryName;
this.quantity = quantity;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getFullname() {
return fullname;
}
public void setFullname(String fullname) {
this.fullname = fullname;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public String getDate() {
return date;
}
public void setDate(String date) {
this.date = date;
}
public String getFilling() {
return filling;
}
public void setFilling(String filling) {
this.filling = filling;
}
public String getConfectionaryName() {
return confectionaryName;
}
public void setConfectionaryName(String confectionaryName) {
this.confectionaryName = confectionaryName;
}
public String getQuantity() {
return quantity;
}
public void setQuantity(String quantity) {
this.quantity = quantity;
}
}
Util.java
package Util;
public class Util {
public static final int DATABASE_VERSION = 2;
public static final String DATABASE_NAME = "ordersDB";
public static final String TABLE_NAME = "orders";
public static final String KEY_ID = "id";
public static final String KEY_CONFECTIONARY_NAME = "confectionaryName";
public static final String KEY_FILLING = "Filling";
public static final String KEY_ADDRESS = "Address";
public static final String KEY_DATE = "date";
public static final String KEY_FULLNAME = "Fullname";
public static final String KEY_QUANTITY = "Quantity";
}