2011-09-07 10 views
5

में ऑटो से बढ़ी हुई आईडी को फिर से कैसे शुरू कर सकता हूं मेरे पास एक एंड्रॉइड SQLite डेटाबेस है और मैंने कुछ पंक्तियां डाली हैं। मैं इन पंक्तियों को नष्ट कर दिया करने के बाद आईडी स्तंभ पिछले आईडी से जारी है और मैं sqlite_sequenceमैं एंड्रॉइड एसक्यूएलएट डाटाबेस

नामक एक मेज वहां आपकी .db फ़ाइल के अंदर से 1.

+2

मुझे पता है की कोशिश यह नहीं है कि आपने क्या पूछा, लेकिन खुद के लिए सिरदर्द क्यों बनाते हैं? वास्तविक स्वत: उत्पन्न मूल्यों का कोई अर्थ नहीं है, और संभवतः यदि आपने पंक्तियों को हटा दिया है तो आपने सभी निर्भर पंक्तियों को भी हटा दिया है, तो फिर 1 पर पुनरारंभ क्यों करें? – Tim

+0

[SQLite रीसेट प्राथमिक कुंजी फ़ील्ड] के संभावित डुप्लिकेट (http://stackoverflow.com/questions/1601697/sqlite-reset-primary-key-field) –

+0

अब मुझे एहसास हुआ कि मैं आईडी गिनती शुरू किए बिना भी समस्या का समाधान कर सकता हूं 1 से धन्यवाद। – Alex

उत्तर

5

गिनती पुनः आरंभ करना चाहते हैं प्रत्येक पंक्ति दो कॉलम 'नाम' है जो इस तालिका

पर वर्तमान अंतिम मान का संकेत एक पूर्णांक तालिका 'seq' के नाम आप करने के लिए 0

इसे अपडेट कर सकते लेकिन अपनी मेज अद्वितीय पहचानकर्ता के रूप में इस आईडी का उपयोग करता है, तो सावधान रहना है।

इस जवाब पर एक नज़र डालें: SQLite Reset Primary Key Field

5

प्रयास करें:

delete from sqlite_sequence where name='your_table'; 
1

आप सामग्री प्रदाता के माध्यम से हर RowId रीसेट करना चाहते हैं इस

rowCounter=1;do {   
     rowId = cursor.getInt(0); 
     ContentValues values; 
     values = new ContentValues(); 
     values.put(Table_Health.COLUMN_ID, 
        rowCounter); 
     updateData2DB(context, values, rowId); 
     rowCounter++; 

    while (cursor.moveToNext()); 

public static void updateData2DB(Context context, ContentValues values, int rowId) { 
Uri uri; 
uri = Uri.parseContentProvider.CONTENT_URI_HEALTH + "/" + rowId); 
context.getContentResolver().update(uri, values, null, null); 

}

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