Soru & Cevap

SQLite da id aramasında hep aynı sonuç çıkıyor neden? ...

01.07.2014 - 04:42

Android projeme SQlite ekledim değeri sürekli değişen değişkenleri falan SQLite tablosuna ekledim. Ama ekledikten sonra hep aynı değer gösteriliyor. Puan diye bir değişkenim var ve her kazanılan başarıda artıp TextViewa yazılmalı ama veritabanına puan değişkenini ekledikten sonra hep aynı değeri gösteriyor.Select işlemini de id'ye göre yapıyorum. Bilgisi olan varsa yardımcı olursa çok sevinirim. 

12 Görüntülenme

7 Cevap

Sitedeki sorulara cevap verebilmek için giriş yapın ya da üye olun.

picture-1372-1408467635.jpg
ahmtbrk
02.07.2014 - 10:21

Telefondan db'e ulaşamazsın yetki sıkıntısı var çünkü.Emülatörde uygulamayı çalıştırıp verileri ekledikten sonra db yi çekip browserde bakacaksın.Eğer tablodaki alan adları tepede yazıyorsa fakat içinde değer yoksa veriler eklenmiyor bir problem var.

Şimdi ben sana örnek bi helper vereceğim.

[code]

public class DBHelper extends SQLiteOpenHelper {
    public static final String DATABASE_NAME = "DatabaseName";
    public static final String TABLE_LOCATIONS = "TableName";

    public static final int VERSION = 1;

    public DBHelper(Context context) {
        super(context, DATABASE_NAME, null, VERSION);
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        String locationSQL = "CREATE TABLE "
                + TABLE_LOCATIONS
                + "(locationId INTEGER PRIMARY KEY AUTOINCREMENT, latitude VARCHAR, longitude VARCHAR, date VARCHAR,time VARCHAR, address VARCHAR"
                + ")";
        db.execSQL(locationSQL);
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        db.execSQL("DROP TABLE IF EXISTS " + TABLE_LOCATIONS);
        onCreate(db);
    }

    public void mInsertData(DBHelper helper, String TableName,
            ContentValues params) {
        SQLiteDatabase db = helper.getWritableDatabase();
        db.insert(TableName, null, params);
    }

    public void mUpdateData(DBHelper helper, String TableName,
            ContentValues params, String where, String[] whereArgs) {
        SQLiteDatabase db = helper.getWritableDatabase();
        db.update(TableName, params, where, whereArgs);
    }

    public Cursor mGetAllData(DBHelper helper, String TableName,
            String[] columns) {
        Cursor cursor;
        SQLiteDatabase db = helper.getReadableDatabase();
        cursor = db.query(TableName, columns, null, null, null, null, null);
        return cursor;
    }

    public Cursor mGetAllDataWhere(DBHelper helper, String TableName,
            String[] columns, String where, String[] whereArgs) {
        Cursor cursor;
        SQLiteDatabase db = helper.getReadableDatabase();
        cursor = db.query(TableName, columns, where, whereArgs, null, null,
                null);
        return cursor;
    }

    public void mDeleteDataWhere(DBHelper helper, String TableName,
            String where, String[] whereArgs) {
        SQLiteDatabase db = helper.getWritableDatabase();
        db.delete(TableName, where, whereArgs);
    }
}

[/code]

bu helperdeki database ve tablo bilgilerini seninkiyle değiştir.

Daha sonra kullanımıda şöyle olacak.

En tepede [code]DBHelper dbHelper;[/code] olarak tanımla.onCreate blogundada [code]dbHelper = new DBHelper(this);[/code] yap

Mesela insert işlemi için şöyle yapacaksın.

[code]

ContentValues userDataParams = new ContentValues();
userDataParams.put("userId", usid);
userDataParams.put("adSoyad", userName);

dbHelper.mInsertData(dbHelper,DBHelper.TABLE_CONTACTS,userDataParams);

[/code]

çok basit bi şekilde bu şekilde ekleme yaparsın.Helper sınıfımızda tüm methodları tanımladık sadece helperi dışarda türetip tetikleme yaptırdık.En dinamik şekilde böyle olur.

hacer
03.07.2014 - 01:33
Tamam çok teşekkür ederim.
picture-1372-1408467635.jpg
ahmtbrk
01.07.2014 - 11:33

http://www.youtube.com/watch?v=weu9l70yoTQ

bu videoya göz atarsan ddms ekranından db'e ulaşmayı gösteriyor.

burdaki db i bi sqlite browser ile gözatıp datalar var mı bakar mısın?

selectinde sorun göremedim gözümden kaçmadıysa.

hacer
02.07.2014 - 03:01
Baktım değişkenlerin isimleri ve tipleri var ama benim tabloya eklediğim sorular ve şıklar görünmüyor bu normal mi?
hacer
02.07.2014 - 03:19
Birde telefonda db ye ulaşamadım o gördüğüm tabloları emülatörden elde ettim.Ayrıca emülatörde son çalıştırdığımda soru değişti yani eskisi gibi hep aynı soruyu göstermiyor ama telde hep aynı soruyu gösteriyor büyük ihtimalle telin database inden falan kaynaklanıyor. Bunu nasıl çözebilirim, bir bilginiz var mı?
hacer
02.07.2014 - 03:22
Bu arada en üsteki yorumumda sorular ve şıklar derken değişkenlerin değerlerini kastettim.
Profile picture for user HacerSalman
HacerSalman
01.07.2014 - 07:07

Ben uygulamayı telde çalıştırıyordum orda hep aynı soru geliyordu sonra emülatörde deneyim dedim yine ayı şeyi yapıyor veritabanına tek bir soru alıyor ve onu gösteriyor. DDMS i açtım ama database çekemedim yani göremedim neresinde bulunuyor? 

Profile picture for user HacerSalman
HacerSalman
01.07.2014 - 07:04

Bu seferde TextView de sadece null yazıyor. 

picture-1372-1408467635.jpg
ahmtbrk
01.07.2014 - 06:11

eldesoru methodunda db.query'i şu şekilde değiştirir misin?

[code]

db.query(tablead, sutunlar, "id=?", new String[] { "1" }, null, null,null);

[/code]

new String[]{ "1" } kısmına id'ni gönder.ben id yi 1 olarak farz ettim.

Profile picture for user HacerSalman
HacerSalman
01.07.2014 - 05:18

 

 

    public String eldesoru(long l)
    {   SQLiteDatabase db = this.getReadableDatabase();
         String[] sutunlar = new String[] { "id","soru","a","b","c","d" };
            Cursor c = db.query(tablead, sutunlar, id + "="
                    + l, null, null, null, null);
     
            if (c != null  && c.moveToFirst()) {
                
                isim= c.getString(c.getColumnIndex("soru"));
                
            }
            return isim;
            
            
    }

}

 

picture-1372-1408467635.jpg
ahmtbrk
01.07.2014 - 09:08

Kodları görmemiz lazım.Bide uygulamayı emülatörde deniyorsan ddms ekranına girip databaseyi çekip sqlite browser ile datalara göz atabilir misin data taraflı bir sıkıntı var mı?