Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/211.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 删除后是否重新排列数据库行?_Android_Sql_Sqlite - Fatal编程技术网

Android 删除后是否重新排列数据库行?

Android 删除后是否重新排列数据库行?,android,sql,sqlite,Android,Sql,Sqlite,我的应用程序中有一个数据库,当我使用数据库行ID执行删除操作时,行项目将被删除,但我的表保留该空行。我怎样才能删除这个 数据库类: public class ContactDatabase extends SQLiteOpenHelper { SQLiteDatabase db; public static final String DATABASE_NAME="totalContact1.db"; public static final String TABLE_NA

我的应用程序中有一个数据库,当我使用数据库行ID执行删除操作时,行项目将被删除,但我的表保留该空行。我怎样才能删除这个

数据库类:

public class ContactDatabase extends SQLiteOpenHelper {
    SQLiteDatabase db;
    public static final String DATABASE_NAME="totalContact1.db";
    public static final  String TABLE_NAME="mecontact1";
    public static final  String NAME="name";
    public static final  String PHONE="phone";
    public static final  String UID="_id";


    public ContactDatabase(Context context) {
        super(context, DATABASE_NAME, null, 1);

    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        try {
            db.execSQL("create table mecontact1" +
                    "(_id integer primary key autoincrement, name text, phone text)");
        }catch(android.database.SQLException e){
                System.out.println("table create nhi ho rha");
        }
    }
    public void deleteContact(String d,int pos){
        db=this.getWritableDatabase();
        db.delete(TABLE_NAME, UID + "= ? ", new String[] {String.valueOf(pos)}); 
    }
}

当我执行db.delete时(TABLE_NAME,UID+“=?”,新字符串[]{String.valueOf(pos)})操作在
删除联系人(字符串d,int pos)
中,表保留空行的记录。如何按顺序重新排列具有_id列的表?

因此,如果我有第1、2、3行,我删除了2行,那么您有1、3行,您希望这些行自动重新排列为1、2行,对吗?如果是这种情况,请在
db.delete
db.execSQL(“更新”+TABLE_NAME+“set”+UID+”=(“+UID+”-1),其中“+UID+”>“+String.valueOf(pos)))之后尝试此操作。无论如何,这不是一个好的解决方案,但在我测试它时它起了作用。@DanielK这将很好地起作用,但问题是当我在表中添加新项时_id开始用最后输入的值计数。说明:我有第1、2、3行,我删除了第2行,然后我有第1、3行,通过使用您的查询,它将进行排序,但当我添加新项时,它将以4、5、6开头……您可以从表声明中删除
自动增量
,然后每次插入时,您都可以查询总行,然后在
\u id+1
处插入。再说一次,它充其量只是一种变通办法。@DanielK有没有办法在不删除自动增量的情况下实现这些功能?我到目前为止读到的都没有。签出&。如果我有第1、2、3行,我删除了第2行,那么你有第1、3行,你希望这些行自动重新排列为第1、2行,对吗?如果是这种情况,请在
db.delete
db.execSQL(“更新”+TABLE_NAME+“set”+UID+”=(“+UID+”-1),其中“+UID+”>“+String.valueOf(pos)))之后尝试此操作。无论如何,这不是一个好的解决方案,但在我测试它时它起了作用。@DanielK这将很好地起作用,但问题是当我在表中添加新项时_id开始用最后输入的值计数。说明:我有第1、2、3行,我删除了第2行,然后我有第1、3行,通过使用您的查询,它将进行排序,但当我添加新项时,它将以4、5、6开头……您可以从表声明中删除
自动增量
,然后每次插入时,您都可以查询总行,然后在
\u id+1
处插入。再说一次,它充其量只是一种变通办法。@DanielK有没有办法在不删除自动增量的情况下实现这些功能?我到目前为止读到的都没有。退房&。