2012-03-18 14 views
9

में ऑटोइनक्रिकमेंट रीसेट करना मेरे पास यह तरीका है जो किसी तालिका से सभी पंक्तियों को हटा देगा लेकिन मैं यह भी चाहता हूं कि यह ऑटोइनक्रिकमेंट को रीसेट कर दे ताकि जब कोई नई पंक्ति जोड़ दी जाए तो यह फिर से शुरू हो जाएगी। मैं जिस SQL ​​कथन का उपयोग कर रहा हूं वह कुछ स्तंभों के कारण काम नहीं कर रहा है जो मौजूदा नहीं हैं। क्या मैं यह ठीक कर रहा हूँ?एंड्रॉइड एसक्यूएलएट

private void rmvAll() { 

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

} 

उत्तर

19

आप अपनी तालिका नाम के आसपास एकल उद्धरण की आवश्यकता होगी, यानी

db.execSQL("DELETE FROM SQLITE_SEQUENCE WHERE NAME = '" + TABLE_NAME + "'"); 
3
dldnh के जवाब पर

भवन:

निम्न क्वेरी col पहचान स्तंभ में सबसे बड़ा मान को seq सेट हो जाएगा Tbl तालिका में, इसलिए बाधाओं का उल्लंघन करने का कोई खतरा नहीं है।

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

तुम भी,() SQLiteDatabase की विधि को नष्ट उपयोग कर सकते हैं इस

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

मैं भी कोशिश कर रहा था की तरह।

अंत में, मैं इस उत्तर कोड ...

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

इस कोड काम हटाएँ और पुनः table.and रीसेट आईडी की तरह मिल गया।

शुभकामनाएं

+0

महत्वपूर्ण: एंड्रॉइड स्टूडियो में काम चीनी शर्करा में तुरंत चलाना चाहिए –

संबंधित मुद्दे