Verilerimi kaybetmeden mevcut DB'mde ek bir tablo eklemek istiyorum. Bu yüzden tabloları düşürmek ve bunları yeni oluşturmak hiçbir seçenek değildir. Bunu yapmanın en iyi yolu nedir?Varolan SQLITE'da ek tablo oluşturma (veri kaybı olmadan)
cevap
Yaptığım gibi ayrı bir veritabanı oluşturmak, mevcut olandan her şeyi yeni bir kopyaya kopyalamak ve daha sonra eski veritabanını oraya bırakmak ve bilgileri geçici veritabanından geri kopyalamak. Orada bunu yapmak için başka bir yoludur ama olup olmadığını, bu
, SQLiteOpenHelper genişleten bir sınıf oluşturun onOpen (SQLiteDatabase db) geçersiz hakkında duymak tablo oluşturma ile bir String yaratacak eğer
emin sorgulayın ve db.execSQL (String str) kullanın;
Daha kolay görünüyor. SQLiteOpenHelper'ı kullanıyorum. Yani DB zaten mevcut ise onCreate() asla çağrılmamıştır. Sürüm numarası arttığında, onUpdate() çağrılır. OnUpdate() 'de yeni tablomu "var olsaydı tablo oluştur" ekledim. SQLITE.ORG belgelerinden: Ancak, "IF NOT EXISTS" deyimi CREATE TABLE deyiminin bir parçası olarak belirtilmişse ve aynı adın bir tablosu veya görünümü zaten mevcutsa, CREATE TABLE komutunun hiçbir etkisi yoktur (ve hata mesajı verilir). Şimdi masa oluşturuldu ve iyi. Eğer istediğiniz veritabanının eski versiyonu
İşte@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
if (oldVersion == xyz) {
db.execSQL(QUERY_CREATE_TABLE_..........NEW);
}
}
xyz: - gibi
varolan veritabanında yeni bir tablo eklemek istiyorsanız o zaman ONUPGRADE içinde bu yapmalıyım() yöntemi yeni tablo ekle.
Ve sonra ONUPGRADE() yöntem çağrıları veritabanı sürümü artırmak ve durum tablo eklemek kullanırken Database_Version
artırmak unutmayın.
Ve ayrıca, mevcut tablolarla onCreate içinde yeni tablo() oluşturmak gibi taze yükler için: -
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL(QUERY_CREATE_TABLE_..........OLD);
db.execSQL(QUERY_CREATE_TABLE_..........OLD);
db.execSQL(QUERY_CREATE_TABLE_..........NEW);
}
- 1. Veri kaybı olmadan sütun türünü değiştir
- 2. Kodlama olmadan byte [] to String dönüştürülür, veri kaybı yok
- 3. Meta veri kaybı olmadan Linux'ta atomik dosya kaydetme
- 4. UIImage Kalite kaybı olmadan yeniden boyutlandırın
- 5. Kalite kaybı olmadan UILabel'ı yeniden boyutlandırma
- 6. ORACLE SQL - tablo oluşturma geçersiz veri türü
- 7. Python-Sayısal olmayan veri listelerinden tablo oluşturma
- 8. Varolan bir tablodan tablo oluşturmak için MySQL sorgusu oluşturma
- 9. Varolan/yeni veri anahtarları arasındaki çakışmalar?
- 10. vsdbcmd veri kaybı olabilir, ama nerede?
- 11. varolan tablo sütununa filestream ekle
- 12. Lyx'te ek oluşturma
- 13. Varolan sanal makineden docker görüntüsü oluşturma
- 14. Varolan bir belgeye ek özellikler ekleme elasticsearch
- 15. Bir SQL sorgusuyla veri olmadan mysql tablo yapısını nasıl dökümlerim?
- 16. Dosya şifrelemesini bilgi kaybı olmadan değiştirin intellij idea
- 17. ek veri bir aktivitede
- 18. Ek veri gönder iBeacon
- 19. Tablo olmadan yapı gibi HTML tablo
- 20. Varolan bir mySQL tablosuna veri sütunu ekle
- 21. TCPDF: HTML Tablo Oluşturma
- 22. Sütunsuz tablo oluşturma
- 23. iReport'ta statik tablo oluşturma
- 24. mysql tablosunda tablo oluşturma
- 25. postgreSQL içinde tablo oluşturma
- 26. oluşturma Multirow tablo başlıkları
- 27. Dosyadan tablo oluşturma
- 28. SSIS - potansiyel bir veri kaybı nedeniyle değer dönüştürülemiyor
- 29. Veri ek açıklama niteliklerini birleştirin
- 30. Netbeans'de varolan sınıflardan Sınıf Şeması Oluşturma IDE
çok daha kolay gibi görünüyor. SQLiteOpenHelper'ı kullanıyorum. Yani DB zaten varsa onCreate() hiçbir zaman çağrılmaz. Sürüm numarası arttığında, onUpdate() çağrılır. OnUpdate() Yeni tablomu "var değilse tablo oluştur" ekledim. SQLITE.ORG belgelerinden: Ancak, "IF NOT EXISTS" deyimi CREATE TABLE ifadesinin bir parçası olarak belirtilmişse ve aynı adın bir tablosu veya görünümü zaten mevcutsa, CREATE TABLE komutunun hiçbir etkisi yoktur (ve hata mesajı alınmadı). Şimdi masa oluşturuldu ve iyi. – venni