SQLite'de ID'ler otomatik değişmiyor

try{

            val veritabani = this.openOrCreateDatabase("urunler", Context.MODE_PRIVATE,null)
            veritabani.execSQL("CREATE TABLE IF NOT EXISTS urunler(id INTEGER PRIMARY KEY,isim VARCHAR,fiyat INT)")
            veritabani.execSQL("INSERT INTO urunler(isim,fiyat)VALUES('Bronze Premium',1200)")
            veritabani.execSQL("INSERT INTO urunler(isim,fiyat)VALUES('DC PREMİUM',1500)")
            veritabani.execSQL("INSERT INTO urunler(isim,fiyat)VALUES('WAR PREMİUM',2000)")
            veritabani.execSQL("INSERT INTO urunler(isim,fiyat)VALUES('Exp Premium',3000)")

            val cursor = veritabani.rawQuery("SELECT * FROM urunler",null)

            val idColumnIndex = cursor.getColumnIndex("id")
            val isimColumnIndex = cursor.getColumnIndex("isim")
            val fiyatColumnIndex = cursor.getColumnIndex("fiyat")

            while (cursor.moveToNext()){
                println("ID: ${cursor.getInt(idColumnIndex)}")
                println("Isim: ${cursor.getString(isimColumnIndex)}")
                println("Fiyat: ${cursor.getInt(fiyatColumnIndex)}")
            }
            cursor.close()

        }catch(e: Exception){
            e.printStackTrace()
        }

Çıktıda ID Sürekli 0 çıkıyor. anaktar kelimeler ve değerler haricinde, videodaki herseyi ayni yaziyorum lakin, videoda ID’ler 1,2,3,4 vs diye artarken, bendekiler artmıyor. Bunun sebebi ne olabilir acaba.

ss

insert into kisminda values(NULL, ?,?) olacak şekilde düşüneceksin. Null olan id. Telefondan bu kadar oluyor ilgililer yardımcı olacaktır.

hocam Ekrana çıktı vermiyor bu seferde.

database e commit ettin mi? etmediysen kaydetmemiş olabilir

ID’nin AUTOINCREMENT özelliğine de sahip olması gerekmez mi?

1 Beğeni

Ne videosu?

bkz: Soru Sorarken Sıkça Düşülen Hatalar #8

Bundan bir sonraki bakmaniz gereken yer database. Database’de de 0’lar mi acaba, yoksa cikti kodunda bir sorun mu var?


(Basliktaki tek cevap oldugumu sanarken yazdigim) Cevaplayacak baska kisilere not: Sorunun nerede oldugunu ben de gorebiliyorum, fakat su ornegi iki parcaya bolememek yanlis bir tablo tanimindan daha buyuk bir sorun.

Gerekmez mi tabi ki gerekir.

Ama arkadaş yeni öğreniyormuş. Tabloyu silip yeniden yapamıyor muş.

SQLite’da otomatik ID vermiyor Yardım Edermisiniz. | OnlineHile | Server Tanıtımı , Metin2 PVP Serverler , Server Tanıtım , Oyun Forumu , MMO Forum , Knight Online Hileleri , Rise Online Hileleri

 val veritabani = this.openOrCreateDatabase("urunler", Context.MODE_PRIVATE,null)
 veritabani.execSQL("DROP TABLE IF EXISTS urunler;") 
 veritabani.execSQL("CREATE TABLE IF NOT EXISTS urunler(id INTEGER PRIMARY KEY AUTOINCREMENT,isim VARCHAR,fiyat INT)")
veritabani.execSQL("DROP TABLE IF EXISTS urunler;") 

bu kodu ekleyip calıştırdıgımda ID’lere numaralandırma işlemi yaptı. daha sonra kodu silip, anahtar kelimeleri ve değerleri değiştirip kodları tekrar calıstırdıgımda, ID’ler otomatik vermeye devam etti. Benim gibi sorun yasayanlar olursa bu sekilde sorunu giderebilir. Bunun yerine problemi farkli yolla giderebiliyorsak, o yoluda öğrenmek isterim.

haklısınız fakat videoyu paylasma gibi bir imkanım yok. indirilmeye ve paylasıma kapali video. btkakademide atıl samancıoglunun egitim videosundaki kodların aynısını yazdım. tek fark, anahtar kelimeleri ve değerleri değiştirmek oldu. LogCat’e baktıgımda ID ler hep 0 görünüyordu. ama videoda ID ler hep otomatik ekleniyordu.

onuda denedim hocam olmamıştı. bugun farkli bir kod kaynagi öğrendim, problemi o sekilde giderdim.

İlgi ve alakalarınız için hepinize çok teşekkür ederim.

Anladim. O zaman bir dahaki sefere “malesef paylasamayacagim, alinti yapamayacagim bir video” seklinde bahsederseniz videoyu beklemeyiz. Kodu da baglami disinda inceleriz.

Mesela bir Android programi olan logcat’in konuyla alakasini anlayamadim.

Olusan database’e bakmanizi tavsiye ediyorum. Oradaki degerler 0 ise kodun ciktisiyla, logcat’le ugrasmanize gerek yok. Database’e kayit giren kisimda sorun var.

Surada biraz daha bilgi var: SQLite Autoincrement