2012-03-18 32 views
9

Tôi có phương pháp này sẽ xóa tất cả các hàng khỏi bảng nhưng tôi cũng muốn nó đặt lại tự động sao cho khi một hàng mới được thêm vào, nó sẽ bắt đầu lại. Câu lệnh SQL tôi đang sử dụng không hoạt động do các cột nhất định không tồn tại. Tôi làm đúng không?Đặt lại Autoincrement trong Android SQLite

private void rmvAll() { 

    SQLiteDatabase db = appts.getWritableDatabase(); 
    db.delete(TABLE_NAME, null, null); 
    db.execSQL("DELETE FROM SQLITE_SEQUENCE WHERE NAME = " + TABLE_NAME); 

} 

Trả lời

19

bạn sẽ cần dấu nháy đơn xung quanh tên bảng của bạn, ví dụ:

db.execSQL("DELETE FROM SQLITE_SEQUENCE WHERE NAME = '" + TABLE_NAME + "'"); 
3

Xây dựng về câu trả lời dldnh của:

Các truy vấn sau đây sẽ thiết lập seq với giá trị lớn nhất trong cột col sắc trong bảng Tbl, vì vậy không có nguy cơ vi phạm ràng buộc.

UPDATE sqlite_sequence SET seq = (SELECT MAX(col) FROM Tbl) WHERE name="Tbl" 
0

bạn cũng có thể sử dụng phương pháp xóa() của SQLiteDatabase, như thế này

db.delete("SQLITE_SEQUENCE","NAME = ?",new String[]{TABLE_NAME}); 
1

Tôi đã cố gắng quá khó.

Cuối cùng, tôi đã nhận mã câu trả lời này ...

Book.deleteAll(Book.class); 
book=new Book(user, pass); 
book.setId(Long.valueOf(book.listAll(Book.class).size())); 
book.save(); 

mã này làm việc như xóa và tái tạo id reset table.and.

chúc may mắn

+0

quan trọng: trong công việc đường orm trong studio android phải tắt ngay lập tức –

Các vấn đề liên quan