如何从sqlite,android获取插入行的详细信息

时间:2011-10-14 07:50:51

标签: android sqlite

我创建了一个包含两列的表(Detail),一列(ID)是主列,自动递增,而另一列(EmpName)是varchar类型。在数据库中插入数据时,我只使用以下代码在EmpName列中插入数据。但我想知道该记录的详细信息(ID和名称,但我知道只有名称和ID由数据库创建)。我可以编写另一个select语句并在执行insert查询后得到游标的最后一条记录,但如果在执行select语句之前再进行另一次插入,那么我的数据库会给出错误的结果。我怎样才能获得详细信息?

ContentValues initialvalues = new ContentValues();
initialvalues.put("EmpName", "John");
db.insert("Detail", null, initialvalues);// db is database

以上代码适用于在数据库中插入数据但如何获取详细信息?

1 个答案:

答案 0 :(得分:0)

请API:SQLiteStatement.executeInsert()

根据源代码:

/**
     * Execute this SQL statement and return the ID of the row inserted due to this call.
     * The SQL statement should be an INSERT for this to be a useful call.
     *
     * @return the row ID of the last row inserted, if this insert is successful. -1 otherwise.
     *
     * @throws android.database.SQLException If the SQL string is invalid for
     *         some reason
     */
    public long executeInsert() {
        BlockGuard.getThreadPolicy().onWriteToDisk();
        if (!mDatabase.isOpen()) {
            throw new IllegalStateException("database " + mDatabase.getPath() + " already closed");
        }
        long timeStart = SystemClock.uptimeMillis();
        mDatabase.lock();

        acquireReference();
        try {
            native_execute();
            mDatabase.logTimeStat(mSql, timeStart);
            return (mDatabase.lastChangeCount() > 0) ? mDatabase.lastInsertRow() : -1;
        } finally {
            releaseReference();
            mDatabase.unlock();
        }
    }