这是我的DBHandler
课程。
如果你检查我的create语句,它的数据类型如enum,blob,date.And在我的ArrayList<Items> getAllItems()
,而我正在做“items.setItem_metric_type
”
这是我得到的错误
ERROR IS:CHANGE 1ST PARAMETER ENM TO INT.
是的,我从服务器获取数据。
public class DBHandler extends SQLiteOpenHelper implements ItemsListener{
private static final int DB_VERSION = 1;
private static final String DB_NAME ="Items.db";
private static final String TABLE_NAME ="Item";
private static final String item_number="item_number";
private static final String item_ean="item_ean";
private static final String item_desc="item_desc";
private static final String item_name="item_name";
private static final String item_metric_type="item_metric_type";
private static final String item_favorite="item_favorite";
private static final String item_common_quantity="item_common_quantity";
private static final String item_common_SP="item_common_SP";
private static final String Item_metric_value="Item_metric_value";
private static final String item_SP="item_ SP";
private static final String item_company="item_company";
private static final String item_brand="item_brand";
private static final String Item_product_line="Item_product_line";
private static final String item_category="item_category";
private static final String Item_type="Item_type";
private static final String item_mrp="item_mrp";
private static final String mfg_date="mfg_date";
private static final String exp_date="exp_date";
private static final String Item_vat="Item_vat";
private static final String batch_id="batch_id";
private static final String Item_in_multiples="Item_in_multiples";
private static final String Item_image_selected="Item_image_selected";
private static final String last_modified_time="last_modified_time";
private static final String last_modified_by="last_modified_by";
private static final String Item_active="Item_active";
private static final String Item_auto_added="Item_auto_added";
String CREATE_TABLE="CREATE TABLE "+TABLE_NAME+" (item_number INTEGER PRIMARY KEY AUTOINCREMENT,item_ean INTEGER,item_desc TEXT NOT NULL,item_name TEXT NOT NULL,item_metric_type INTEGER NOT NULL,item_favorite BOOLEAN,item_common_quantity FLOAT,item_common_SP FLOAT,Item_metric_value FLOAT,item_SP FLOAT,item_company TEXT,item_brand TEXT,Item_product_line TEXT,item_category INTEGER, Item_type INTEGER,item_mrp FLOAT,mfg_date DATE,exp_date DATE,Item_vat FLOAT,batch_id INTEGER,Item_in_multiples BOOLEAN,Item_image_selected BLOB,last_modified_time DATETIME,last_modified_by INTEGER,Item_active BOOLEAN,Item_auto_added ENUM)";
String DROP_TABLE="DROP TABLE IF EXISTS "+TABLE_NAME;
public DBHandler(Context context) {
super(context,DB_NAME,null, DB_VERSION);
}
@Override
public void addItems(Items items) {
SQLiteDatabase db=this.getWritableDatabase();
try {
ContentValues values = new ContentValues();
values.put(item_number, items.getItem_number());
values.put(item_ean, items.getItem_ean());
values.put(item_desc, items.getItem_desc());
values.put(item_name, items.getItem_name());
values.put(item_metric_type, String.valueOf(items.getItem_metric_type()));
values.put(item_favorite,items.getItem_favorite());
values.put(item_common_quantity,items.getItem_common_quantity());
values.put(item_common_SP,items.getItem_common_sp());
values.put(Item_metric_value,items.getItem_metric_value());
values.put(item_SP,items.getItem_sp());
values.put(item_company,items.getItem_company());
values.put(item_brand,items.getItem_brand());
values.put(Item_product_line,items.getItem_product_line());
values.put(item_category,items.getItem_category());
values.put(Item_type, String.valueOf(items.getItem_type()));
values.put(item_mrp,items.getItem_mrp());
values.put(mfg_date, String.valueOf(items.getMfg_date()));
values.put(exp_date, String.valueOf(items.getExp_date()));
values.put(Item_vat,items.getItem_vat());
values.put(batch_id,items.getBatch_id());
values.put(Item_in_multiples,items.getItem_in_multiples());
values.put(Item_image_selected, String.valueOf(items.getItem_image_selected()));
values.put(last_modified_time, String.valueOf(items.getLast_modified_time()));
values.put(last_modified_by,items.getLast_modified_by());
values.put(Item_active,items.getItem_active());
values.put(Item_auto_added, String.valueOf(items.getItem_auto_added()));
db.insert(TABLE_NAME,null,values);
db.close();
}catch (Exception e){
Log.e("Problem inserting",e+"");
}
}
@Override
public ArrayList<Items> getAllItems() {
SQLiteDatabase db=this.getReadableDatabase();
ArrayList<Items> itemList=null;
try{
itemList=new ArrayList<Items>();
String QUERY="SELECT * FROM " +TABLE_NAME;
Cursor cursor=db.rawQuery(QUERY,null);
if (!cursor.isLast())
{
while (cursor.moveToNext())
{
Items items=new Items();
items.setItem_number(cursor.getInt(0));
items.setItem_ean(cursor.getInt(1));
items.setItem_desc(cursor.getString(2));
items.setItem_name(cursor.getString(3));
//items.setItem_metric_type(cursor.getInt(4));
//items.setItem_favorite(cursor.getString(5));
items.setItem_common_quantity(cursor.getFloat(5));
items.setItem_common_sp(cursor.getFloat(6));
items.setItem_brand(cursor.getString(7));
items.setItem_product_line(cursor.getString(8));
items.setItem_category(cursor.getInt(9));
items.setItem_type(cursor.getInt(10));
items.setItem_mrp(cursor.getFloat(11));
items.setMfg_date(cursor.getInt(12));
items.setItem_vat(cursor.getFloat(13));
items.setBatch_id(cursor.getInt(14));
items.setItem_in_multiples(cursor.getString(15));
items.setItem_image_selected(cursor.getInt(16));
//items.setLast_modified_time(cursor.getColumnName(17));
items.setLast_modified_by(cursor.getInt(18));
itemList.add(items);
}
}
db.close();
}catch (Exception e){
Log.e("error displaying",e+"");
}
return itemList;
}
@Override
public int getItemsCount() {
int num=0;
SQLiteDatabase db=this.getReadableDatabase();
try {
String query="SELECT * FROM " +TABLE_NAME;
Cursor cursor=db.rawQuery(query,null);
num=cursor.getCount();
db.close();
return num;
}catch (Exception e){
Log.e("in getcount",e+"");
}
return 0;
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL(CREATE_TABLE);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL(DROP_TABLE);
onCreate(db);
}
}
答案 0 :(得分:0)
SQLite有一个有限的set of data types。
ContentValues
类直接支持布尔值。要从游标中读取数据,请将数字与零进行比较,或者之前只调用cursorRowToContentValues()(这也使得使用列名更容易读取值)。
您必须选择如何在数据库中存储枚举值;你可以使用字符串或数字。处理此问题的最佳方法是向枚举添加方法以从/转换为数据库类型。
SQLite的内置日期/时间函数支持多个formats,但Java代码通常使用另一种格式(由Java内部使用):自1970年以来的毫秒。
无论您选择何种格式,您的代码都必须使用例如Date.getTime()
或您自己的转换函数从/转换为数据库格式。