在SQLite数据库中插入布尔值



我读到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