如何在sqlite for android中获取执行查询字符串?

时间:2014-07-16 13:57:09

标签: android sqlite

我正在使用sqlite 我想打印在db中执行的查询以插入

这是我的代码

// for SAving Ocean/Air sales
public int saveOrder(Order odr) throws SQLException  {
    SQLiteDatabase db = con.getWritableDatabase();
    int ordrId = 0;

    ContentValues values = new ContentValues();         
    values.put("cr_usr", odr.getCrUsr());
    values.put("cr_ts", odr.getCrTs().toString());
    values.put("eat_mst_cust_id", odr.getEatMstCustId());
    values.put("ordr_dt", odr.getOrdrDt().toString());  
    String selectQuery = "SELECT last_insert_rowid()";  
    try {

        // Inserting Row
        db.insertOrThrow("eat_ordr", null, values);---getting error here for constraint failed
        Cursor cursor = db.rawQuery(selectQuery, null);
        cursor.moveToFirst();
        ordrId = cursor.getInt(0);
        db.close();     
    } finally {
        db.close();
    }
return ordrId;
}

我没有收到任何错误,但是行无法插入bcz,它为idvalue返回0 所以我想看看执行的查询如何获得该查询?

这是我的表结构

CREATE TABLE "eat_ordr" ("eat_ordr_id" INTEGER PRIMARY KEY AUTOINCREMENT  NOT NULL , 
"eat_mst_cust_id" VARCHAR NOT NULL  REFERENCES "eat_mst_cust"("eat_mst_cust_id"), 
"ordr_no" VARCHAR NOT NULL  UNIQUE , 
"ordr_dt" DATETIME NOT NULL , 
"ordr_stat" VARCHAR NOT NULL ,
"last_sync_ts" DATETIME, 
"cr_ts" DATETIME DEFAULT CURRENT_TIMESTAMP, "md_ts" DATETIME, "cr_usr" VARCHAR, "md_usr" VARCHAR)

1 个答案:

答案 0 :(得分:2)

insertOrThrow documentation说:

  

<强>返回
  新插入行的行ID

所以这可以更轻松地完成:

ordrId = db.insertOrThrow("eat_ordr", null, values);