在SQLite DB中插入布尔值

时间:2015-05-28 11:22:38

标签: android sqlite

我已经读过SQLite不支持布尔数据类型,而是需要使用 整数1(真)和0(假) 。所以我使用了整数并且它正确插入但是当我根据比较检索行时我没有得到行。我不明白为什么。

这些片段是这样的:

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 ,在我的情况下是布尔值。但我得零行。但是在我的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,这是一种类型   在我的情况下布尔值(0 \ 1)

现在重点是我比较错误或其他一些事情

同样在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);
        }
    }

1 个答案:

答案 0 :(得分:0)

当您真正想做的事情是处理数据对象时,为什么要烦恼自己?

有很多ORM库可以抽象SQL进程并使您只能处理java对象。

我自己通常会将GreenDAO用于Android项目。