Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/212.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何获取我刚刚添加到数据库中的最新对象的id?_Android_Database - Fatal编程技术网

Android 如何获取我刚刚添加到数据库中的最新对象的id?

Android 如何获取我刚刚添加到数据库中的最新对象的id?,android,database,Android,Database,我创建了一个数据库,它保存名称、信息,并为每个保存到数据库中的对象提供一个“_id” 现在,我想用下一个函数在末尾获取新添加的对象正在获取的id—我已经尝试了下一个代码—但我确信这不是正确的方法 public long insertAuto(Student student){ SQLiteDatabase db = dbOpen.getWritableDatabase(); ContentValues vals = new ContentValues();

我创建了一个数据库,它保存名称、信息,并为每个保存到数据库中的对象提供一个“_id”

现在,我想用下一个函数在末尾获取新添加的对象正在获取的id—我已经尝试了下一个代码—但我确信这不是正确的方法

public long insertAuto(Student student){
        SQLiteDatabase db = dbOpen.getWritableDatabase();

        ContentValues vals = new ContentValues();
        vals.put(Constants.STUDENT_NAME, student.getName());
        vals.put(Constants.STUDENT_INFO, movie.getInfo());

        db.insert(Constants.TABLE_NAME_STUDENTS, null, vals);

            //this is where i thinks is my mistake! 
        long id = student.getId();

        db.close();

        return  id;
    }

因此,感谢您提供的任何帮助

使用
SQLiteDatabase.insert()
方法的返回值

作为状态,此方法返回


使用
SQLiteDatabase.insert()方法的返回值

作为状态,此方法返回

您可以尝试以下方法:

 String query = "SELECT ROWID from TABLE_NAME_STUDENTS order by ROWID DESC limit 1";

 Cursor c = db.rawQuery(query);

 if (c != null ) {

     c.moveToFirst();
     id = c.getLong(0);
 }
您可以尝试以下方法:

 String query = "SELECT ROWID from TABLE_NAME_STUDENTS order by ROWID DESC limit 1";

 Cursor c = db.rawQuery(query);

 if (c != null ) {

     c.moveToFirst();
     id = c.getLong(0);
 }

检查以下文件:

它为您返回新插入的rowId

public long insertAuto(Student student){
    SQLiteDatabase db = dbOpen.getWritableDatabase();

    ContentValues vals = new ContentValues();
    vals.put(Constants.STUDENT_NAME, student.getName());
    vals.put(Constants.STUDENT_INFO, movie.getInfo());

    long id = db.insert(Constants.TABLE_NAME_STUDENTS, null, vals);

    db.close();

    return  id;
}

检查以下文件:

它为您返回新插入的rowId

public long insertAuto(Student student){
    SQLiteDatabase db = dbOpen.getWritableDatabase();

    ContentValues vals = new ContentValues();
    vals.put(Constants.STUDENT_NAME, student.getName());
    vals.put(Constants.STUDENT_INFO, movie.getInfo());

    long id = db.insert(Constants.TABLE_NAME_STUDENTS, null, vals);

    db.close();

    return  id;
}

1/如果您自己在应用程序中生成id,那么您所做的是正确的

lastId = theLastSavedStudentObject.get(id);
2/看看你的代码,似乎你让数据库自动生成id(可能是MySQL自动增量),那么最后一个id必须从数据库中选择,或者通过插入函数返回

lastSaveId = db.insert(Constants.TABLE_NAME_STUDENTS, null, vals);
或使用以下SQL查询直接从数据库进行查询:

select max(id) from mytable;   (for autoincrement ID)

1/如果您自己在应用程序中生成id,那么您所做的是正确的

lastId = theLastSavedStudentObject.get(id);
2/看看你的代码,似乎你让数据库自动生成id(可能是MySQL自动增量),那么最后一个id必须从数据库中选择,或者通过插入函数返回

lastSaveId = db.insert(Constants.TABLE_NAME_STUDENTS, null, vals);
或使用以下SQL查询直接从数据库进行查询:

select max(id) from mytable;   (for autoincrement ID)

无论何时在数据库上运行插入查询,它都会将当前插入行的行id作为long值返回

long id = db.insert(Constants.TABLE_NAME_STUDENTS, null, vals);
return id;

此行id将是唯一的,可用于进一步的查询。

无论何时在数据库上运行插入查询,它都会将当前插入行的行id作为长值返回

long id = db.insert(Constants.TABLE_NAME_STUDENTS, null, vals);
return id;

该行id将是唯一的,可用于进一步的查询。

我认为这个问题已经存在。我想这个问题已经存在了。检查:您的意思是我应该使用'db.insert(Constants.TABLE_NAME_STUDENTS,null,vals);'作为id的返回值?我更新了答案,希望现在答案清楚:)你的意思是我应该使用“db.insert(Constants.TABLE_NAME_STUDENTS,null,vals);”作为id的返回值?我更新了我的答案,希望它现在清楚:)