2015-06-23 2 views
1

Я хочу получить значение первичного ключа последней вставленной строки, которое устанавливается автоматически (AUTO INCREMENT). Я просмотрел файл S/O и нашел ответы для последнего row_id. Но мне нужны последние значения вставленной строки. Пожалуйста, помогите мне.Как получить последнюю вставленную строку в SQlite android

Благодаря

+1

показать, что создать таблицу запроса? –

+0

Что вы делали до сих пор? Некоторая часть кода была бы намного полезнее .. –

+0

Возможный дубликат [Получить сгенерированный идентификатор после вставки] (http://stackoverflow.com/questions/5409751/get-generated-id-after-insert) –

ответ

7

Попробуйте этот код

String selectQuery = "SELECT * FROM " + "sqlite_sequence"; 
Cursor cursor = db.rawQuery(selectQuery, null); 
cursor.moveToLast(); 

или

SELECT * 
FROM TABLE 
WHERE ID = (SELECT MAX(ID) FROM TABLE); 

или

SELECT * FROM table ORDER BY column DESC LIMIT 1; 
2

попробовать это:

select * from <TABLE> where row_id = (select max(row_id) from <TABLE>); 

или

SELECT * FROM tablename ORDER BY row_id DESC LIMIT 1; 
0

Использование moveToLast() в Cursor интерфейсе.

От android.googlesource.com

/** 
* Move the cursor to the last row. 
* 
* <p>This method will return false if the cursor is empty. 
* 
* @return whether the move succeeded. 
*/ 
boolean moveToLast(); 

Простой пример:

final static String TABLE_NAME = "table_name"; 
String name; 
//.... 

Cursor cursor = db.rawQuery("SELECT * FROM " + TABLE_NAME, null); 

if(cursor.moveToLast()){ 
    name = cursor.getString(column_index); 
    //--get other cols values 
} 

Если вы хотите получить данные, когда вставки, вы можете использовать insert() в SQLiteDatabase class.

private static final String TABLE_NAME = "table_name"; 
private static final String COLUMN_ONE = "ID"; 
private static final String COLUMN_TWO = "NAME"; 

long row = 0;//to get last row 
//..... 
SQLiteDatabase db= this.getWritableDatabase(); 

ContentValues contentValues = new ContentValues(); 
contentValues.put(COLUMN_TWO, name);//name is a variable for data value 

row = db.insert(TABLE_NAME, null, contentValues); 
//insert() returns the row ID of the newly inserted row, or -1 if an error occurred 

Cursor res = db.rawQuery("SELECT * FROM " + TABLE_NAME + " WHERE ID = ?", new String[] { row+"" }); 
while (res.moveToNext()) {//there is no need to use while, if condition is good. 
    System.out.println(res.getString(0));//I just sout to avoid more code. 
    System.out.println(res.getString(1)); 
} 

This is post is about autoincrement, if you want to read.

Смежные вопросы