fragment ile database




	public class Bildirimler extends Fragment implements OnClickListener {


	 TextView bildirim, icerik;
	 Button icerikGetir;
	 private Veritabani db;
	 
	 @Override
	 public View onCreateView(LayoutInflater inflater, ViewGroup container,
	   Bundle savedInstanceState) {
	  View view = inflater.inflate(R.layout.bildirimler_fragment, container,
	    false);


	  bildirim = (TextView) getActivity().findViewById(R.id.tvBildirim);
	  icerik = (TextView) getActivity().findViewById(R.id.tvIcerik);


	  icerikGetir = (Button) getActivity().findViewById(R.id.bIcerikGetir);
	  
	  db.baglantiyiAc();


	  
	  return view;
	 }


	 @Override
	 public void onActivityCreated(Bundle savedInstanceState) {
	  super.onActivityCreated(savedInstanceState);


	  db = new Veritabani(getActivity());
	  
	 }


	 @Override
	 public void onClick(View v) {


	 }


	}

yukarıda verdiğim kodlama fragment dosyasına veri tabanında veri getirmek istediğim sınıftır. aşağıda ise veritabanı classının kodları mevcut. bir hata var fragmenti açmaya çalıştığımda uygulama kapanıyor.

Veritabani.class kodlaması




	public class Veritabani {


	 public static String DB_PATH = "/data/data/paketismigelecek/databases/";


	 private static final String DATABASE_ISIM = "database adı.sqlite";
	 private static final String DATABASE_TABLO = "turkuicerik";
	 private static final int DATABASE_VERSION = 1;


	 private final Context contextim;
	 private VeritabaniHelper veritabanihelper;
	 private SQLiteDatabase veritabanim;


	
	 public static final String KEY_ROW_ID = "_id";
	 public static final String KEY_BASLIK = "baslik";
	 public static final String KEY_ICERIK = "icerik";


	 public Veritabani(Context c) {
	  this.contextim = c;
	 }


	 public Veritabani baglantiyiAc() {


	  veritabanihelper = new VeritabaniHelper(contextim);
	  veritabanim = veritabanihelper.getWritableDatabase();


	  return this;
	 }


	 public void baglantiyiKapat() {
	  veritabanihelper.close();
	 }


	 private static class VeritabaniHelper extends SQLiteOpenHelper {


	  public VeritabaniHelper(Context contextim) {
	   super(contextim, DATABASE_ISIM, null, DATABASE_VERSION);


	  }


	  @Override
	  public void onCreate(SQLiteDatabase db) {


	   db.execSQL("CREATE TABLE " + DATABASE_TABLO + " (" + KEY_ROW_ID
	     + " INTEGER PRIMARY_KEY AUTOINCREMENT, " + KEY_BASLIK
	     + " TEXT NOT NULL, " + KEY_ICERIK + " TEXT NOT NULL);");
	  }


	  @Override
	  public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {


	   db.execSQL("DROP TABLE IF EXISTS" + DATABASE_TABLO);
	   onCreate(db);
	  }


	 }


	 public String turkuSozu() {


	  String[] sutunlar = new String[] { KEY_ICERIK };
	  Cursor c = veritabanim.query(DATABASE_TABLO, sutunlar, null, null,
	    null, null, null);


	  String turkuSozu = "";


	  return turkuSozu;
	 }
	}


	

 

yardımcı olabilir misiniz?

 

    0

    deniz koç

    02 Ocak 2015

    
    
    
    	import android.content.ContentValues;
    	import android.content.Context;
    	import android.database.Cursor;
    	import android.database.sqlite.SQLiteDatabase;
    	import android.database.sqlite.SQLiteOpenHelper;
    
    
    	public class DatabaseHandler extends SQLiteOpenHelper {
    	 // VERİTABANI VERSİYONU
    	 private static final int DATABASE_VERSION = 1;
    	 // VERİTABANI ADI
    	 private static final String DATABASE_NAME = "turku";
    	 // KULLANACAĞI BİLGİLERİN DEPOLANACAĞI TABLO
    	 private static final String TABLE_USERINFO = "turkuinfo";
    	 // TABLE_USERINFO TABLOSUNUN KOLON İSİMLERİ
    	 private static final String KEY_ID = "id";
    	 private static final String KEY_BASLIK = "baslik";
    	 private static final String KEY_ICERIK = "icerik";
    
    
    	 public DatabaseHandler(Context context) {
    	  super(context, DATABASE_NAME, null, DATABASE_VERSION);
    	 }
    
    
    	 @Override
    	 public void onCreate(SQLiteDatabase db) {
    	  String CREATE_TURKU_TABLE = "CREATE TABLE " + TABLE_USERINFO + "("
    	    + KEY_ID + " INTEGER PRIMARY KEY," + KEY_BASLIK + " TEXT,"
    	    + KEY_ICERIK + ")";
    	  db.execSQL(CREATE_TURKU_TABLE);
    	 }
    
    
    	 @Override
    	 public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
    	  db.execSQL("DROP TABLE IF EXIST " + TABLE_USERINFO);
    	 }
    
    
    	 // SERVİSTEN ALINAN KULLANICI BİLGİLERİ DB'YE KAYDEDEN METOD
    	 public void addUserInfo(Turku info) {
    	  // db YAZILABİLİR OLARAK AÇILDI
    	  SQLiteDatabase db = this.getWritableDatabase();
    	  // db'ye KAYDEDİLECEK VERİLER CONTENTVALUES'E' ATILDI
    	  ContentValues values = new ContentValues();
    	  values.put(KEY_BASLIK, info.getBaslik());
    	  values.put(KEY_ICERIK, info.getIcerik());
    	  // insert metodu AÇILARAK contentvalues İÇİNDEKİ veriler db'ye
    	  // kaydedildi. İŞLEM SONLANDIĞINDA db KAPATILDI.
    	  db.insert(TABLE_USERINFO, null, values);
    	  db.close();
    	 }
    
    
    	 public Turku getUserInfo(int id) {
    	  // db okunabilir olarak aÇILDI
    	  SQLiteDatabase db = this.getReadableDatabase();
    	  // Cursor ile metoda GÖNDERİLEN id ile EŞLEŞEN KULLANACAĞI BULUNANA
    	  // KADAR ARAMA YAPILDI
    
    
    	  Cursor cursor = db.query(TABLE_USERINFO, new String[] { KEY_ID,
    	    KEY_BASLIK, KEY_ICERIK }, KEY_ID + "=?",
    	    new String[] { String.valueOf(id) }, null, null, null, null);
    	  // Arama İŞLEMİ SONUCUNDA CURSOR NULL DEĞİLSE moveToFirst() ile
    	  // bulunan ilk satıra gidildi
    	  if (cursor != null)
    	   cursor.moveToFirst();
    
    
    	  // cursor'daki değeerler UserInformation satırındaki kullanıcı
    	  // bilgilerine atıldı.
    	  Turku info = new Turku(cursor.getInt(0), cursor.getString(1),
    	    cursor.getString(2));
    	  return info;
    
    
    	 }
    
    
    	

     

     

    
    
    
    	import android.app.Fragment;
    	import android.os.Bundle;
    	import android.util.Log;
    	import android.view.LayoutInflater;
    	import android.view.View;
    	import android.view.View.OnClickListener;
    	import android.view.ViewGroup;
    	import android.widget.Button;
    	import android.widget.TextView;
    
    
    	public class Bildirimler extends Fragment implements OnClickListener {
    
    
    	 TextView bildirim, icerik;
    	 Button icerikGetir;
    	 private Veritabani db;
    	 private DatabaseHandler handler;
    	 private Turku turku;
    	 @Override
    	 public View onCreateView(LayoutInflater inflater, ViewGroup container,
    	   Bundle savedInstanceState) {
    	  View view = inflater.inflate(R.layout.bildirimler_fragment, container,
    	    false);
    
    
    	  bildirim = (TextView) view.findViewById(R.id.tvBildirim);
    	  icerik = (TextView) view.findViewById(R.id.tvIcerik);
    	 icerikGetir = (Button) view.findViewById(R.id.bIcerikGetir);
    	 icerikGetir.setOnClickListener(this);
    	 
    	 return view;
    	 }
    
    
    	 @Override
    	 public void onClick(View v) {
    	  if(v.getId() == R.id.bIcerikGetir){
    	   handler = new DatabaseHandler(getActivity());
    	   turku = new Turku(1, "Başlık", "bu denemedir.");
    	   handler.addUserInfo(turku);
    	   Log.d("TAG", handler.getUserInfo(1).getBaslik());
    	   icerik.setText(handler.getUserInfo(1).getIcerik());
    	     
    	  }
    
    
    	 }
    
    
    	}
    
    
    	
    
    
    	
    
    
    	bu iki kodlama ile çalıştırdığımda içerik göster dediğimde veritabanına "bu demedir" şeklinde bir cümleyi veritabanına ekliyor benim yapmak istediğim veri tabanında var olan içeriği göstermek ama burada butona her tıkladığımda "bu dedemedir" şeklinde bir cümle ekleniyor. kendi hazırlayacağım bir veri tabanındaki herhangi bir sütun içeriğinin göserilmesini istiyorum.
    
    
    	ayrıca mozille sqlite manager ile database oluşturuorum. bu oluşturduğum database'i kullanmak istiyorum.
    
    
    	

     

     

    0

    Muhammed ÇOBANOĞLU

    Bilgisayar Mühendisliği - 01 Ocak 2015

    "onCreateView()" içerisinde "db.baglantiyiAc();" işlemini db nesnesini oluşturmadan kullanmaya çalışmışsın. "onActivityCreated()" içerisinde yaptığın "db = new Veritabani(getActivity());" bu işlemden sonra "db.baglantiyiAc();" işlemini yapmayı deneyebilirsin.

    Burada database işlemi ile ilgili güzel bir örnek bulunuyor. Daha önce de bu cevabı verdiğimi hatırlıyorum. Eğer problemi çözemezseniz benimle irtibata geçebilirsiniz.

    Bu soruya cevap vermek için üye olmanız veya giriş yapmanız gerekmektedir.