我读到SQLite不支持布尔数据类型,而我们需要使用Integer 1(true)和0(false)。所以我已经使用了整数,它被正确插入,但当我根据比较检索行,我没有得到行。我不明白为什么。
代码片段是这样的:
private static final String TABLE_NAME = "Shipyard";
private static final String SHIP_TYPE = "shipType";
private static final String SHIP_STATUS_TYPE = "shipStatusType";
String selectQuery = "SELECT * FROM " + TABLE_NAME+ " WHERE "+SHIP_TYPE+ " = "+ "'active' AND "+SHIP_STATUS_TYPE+" = 1";
这里的SHIP_STATUS_TYPE应该等于1,在我的情况下是布尔值。但是我得到的是0行。但是在我的Db中有列shipStatusType = 1
我正在创建这样的表
String CREATE_TABLE = "CREATE TABLE " + TABLE_NAME + " ("
+ SHIP_ID + " TEXT PRIMARY KEY," + SHIP_TITLE + " TEXT,"
+SHIP_STATUS_TYPE+" INTEGER)";
这里我将SHIP_STATUS_TYPE数据类型设置为INTEGER,这是一种布尔值(01)
现在问题是我比较错了或者有别的东西
同样在POJO类中,我像这样设置shipStatusType:
private int shipStatusType;
// Getter and setter
_shipment.setShipStatusType(1)
这就是我如何将货物插入数据库
public void addShipment(Shipment shipment) {
SQLiteDatabase db = this.getWritableDatabase();
ContentValues values = new ContentValues();
values.put(SHIP_ID, shipment.getShipmentId());
values.put(SHIP_TITLE, shipment.getShipTitle());
values.put(SHIP_CREATION_TIME, shipment.getCreatedAt());
values.put(SHIP_STATUS_TYPE, shipment.getShipStatusType());
// Inserting Row
db.insert(TABLE_NAME, null, values);
}
}
当你真正想做的是处理数据对象时,为什么要麻烦你自己用SQL呢?
有许多ORM库抽象了SQL过程,使您能够只处理java对象。我自己通常在Android项目中使用GreenDAO