SQLite database tarih kaydı sorunsalı

ben android'de sqlite datasını anlamak için bir proje yazıyorum. fakat dataya tarih kaydetmem gerekiyor

datada veri tipini --> 'datetime default current_date' olarak kaydediyorum.

fakat sadece gün/ay/yıl almam gerek

onu string olarak alabildim fakat malum tipler uyuşmayınca select sorgusu çalışmıyor. Bu tarih oluşturma kodu..

       Date today = new Date();
       SimpleDateFormat  DATE_FORMAT = new SimpleDateFormat("dd/MM/yyyy");
       String date = DATE_FORMAT.format(today);

Aşağıdaki de dataya ekleme metodum.

    private void gelirEkle(<<?>> kayitTarihi, double miktar, String aciklama, int durum)
    {
        SQLiteDatabase db = v1.getWritableDatabase();
        ContentValues cv1 = new ContentValues();
        cv1.put("kayitTarihi", kayitTarihi);
        cv1.put("miktar", miktar);
        cv1.put("aciklama", aciklama);
        cv1.put("durum", durum);
        db.insertOrThrow("tblKayitlar", null, cv1);
    }
  • <<?>> yeri Date olarak kaydetsem bu sefer eklediğim 'date' değişkeni string tipinde olduğu için hata verir. 
  • <<?>> yeri String olarak kaydetsem bu sefer tarih işlemleri için sorgu yapamıcam. 

 

sizce nasıl yapabilirm?

    +2

    Tuğba Üstündağ

    08 Temmuz 2015

    İlk öncelikle veritabanı tablonda  tarihi alanını string yaparsın.Benim verceğim örnek tablomun adı kullanici yaptım. tabloya veri eklemek için asagıdaki gibi bir metod yazıp;  public void insertUser(String date){ SQLiteDatabase db = this.getWritableDatabase(); String table_name="kullanici"; SQLiteStatement sqLiteStatement = db.compileStatement("" + "INSERT INTO " + table_name + " (date) " + " VALUES (?) "); sqLiteStatement.bindString(1, date); sqLiteStatement.executeInsert(); db.close(); }  Veritabanıdaki kayıdı göstermek icinde; public String getData() { SQLiteDatabase db = this.getReadableDatabase(); String[] columns={"date"}; Cursor cursor=db.query("kullanici",columns,null,null,null,null,null); String date=""; if(cursor!=null && cursor.getCount()>0){ cursor.moveToFirst(); date = cursor.getString(cursor.getColumnIndex("date")); } cursor.close(); db.close(); return date; } Son olarak bu metodları kullanarak; Date today = new Date(); SimpleDateFormat DATE_FORMAT = new SimpleDateFormat("dd/MM/yyyy"); String date = DATE_FORMAT.format(today); Veritabani db=new Veritabani(this); db.insertUser(date); Log.w("db",db.getPassword()); // veritabanı tablondan 08/07/2015 degerini yazdırabilirsin  bu kodları kullanarak sonuc elde edebilirsin

      berk.ergun

      Cum, 10/07/2015 - 11:56
      öncelikle cevabın için teşekkürler. yararlandığım parçalar oldu. fakat benim tarihlerle ilgili işlem yapmam gerek. kaydedilen ve listelenen tarih 'String' olduğu için "between" ile sorgu kullanamıyorum.

      tugbaustundag

      Cum, 10/07/2015 - 16:10
      İlk sorunda between yapmaya calıstıgında alakalı birsey söylememiştin. Bununla alakalı çözüm ise http://stackoverflow.com/questions/10832864/compare-dates-stored-as-string-in-android-sqlite-database sitesindeki son cevap sorununu çözüceğini düşünüyorum.Bir test edersin;)

      berk.ergun

      Cum, 10/07/2015 - 17:20
      verdiğin site sorunumu çözdü. yardımın için tekrar teşekkür ederim :)
    Bu soruya cevap vermek için üye olmanız veya giriş yapmanız gerekmektedir.