İş Tecrubesi
Eğitim Geçmişi
Sertifikalar & Başarılar
Kullanıcıya ait test sonucu bulunmamaktadır.
Dil Becerileri
Son Forum Aktiviteleri
14veritabanı
https://gelecegiyazanlar.turkcell.com.tr/konu/android/egitim/android-401/veritabani-kullanimi
bu alıştırmada veritabanı anlatılmış. buna benzer bir uygulama üzerinde çalışıyorum ama veritabanını kendim oluşturup uygulama ile birlikte yüklemek istiyorum. buradaki kodlamalarda veritabanı bu listedeki bilgilerden ibaret farklı verileri ekleyip ve apk paket uygulamasına bu oluşturduğum veri tabanını dahil etmeyi istiyorum.
nasıl bir yol seyretmeliyim?
database'den veri çekme (SQLite veritabanı)
DATABASEHELPER.JAVA KODLAMASI
[code]
public class DatabaseHandler extends SQLiteOpenHelper {
private static final int DATABASE_VERSION = 1;
private static final String DATABASE_NAME = "turku.sqlite";
private static final String DATABASE_TABLE = "turkuinfo";
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 " + DATABASE_TABLE + "("
+ 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 " + DATABASE_TABLE);
}
public void addUserInfo(Turku info) {
SQLiteDatabase db = this.getWritableDatabase();
ContentValues values = new ContentValues();
values.put(KEY_BASLIK, info.getBaslik());
values.put(KEY_ICERIK, info.getIcerik());
db.insert(DATABASE_TABLE, null, values);
db.close();
}
public Turku getUserInfo(int id) {
SQLiteDatabase db = this.getReadableDatabase();
Cursor cursor = db.query(DATABASE_TABLE, new String[] { KEY_ID,
KEY_BASLIK, KEY_ICERIK }, KEY_ID + "=?",
new String[] { String.valueOf(id) }, null, null, null, null);
if (cursor != null)
cursor.moveToFirst();
Turku info = new Turku(cursor.getInt(0), cursor.getString(1),
cursor.getString(2));
return info; }
}
[/code]
DİĞER KODLAMA
[code]
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 bir denemedir.");
handler.addUserInfo(turku);
Log.d("TAG", handler.getUserInfo(1).getBaslik());
icerik.setText(handler.getUserInfo(1).getIcerik());
}
}
}
[/code]
burada veri tabanım oluşuyor. butona her tıkladığımda ise "Bu bir denemedir." isimli veri ekleniyor. ben bu veriyi eklemek istemiyorum. Hazır veri tabanımı oluşturup bu oluşturduğum veri tabanımın sadece belirli id ye sahip sütun içeriğini ekrana yazdırmak istiyorum. Bu içerikler genelde türkü sözü şiir gibi veriler olacak ya da uzun pararaflar.
Nasıl yapabilirim?
fragment ile database
[code]
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) {
}
}[/code]
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ı
[code]
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;
}
}
[/code]
yardımcı olabilir misiniz?
raw ya da assets klasöründeki txt dosyaları
raw ya da assets klasörü içine depolayacağım txt uzantılı şiir ya da şarkı sözü gibi dosyalarımı fragment layoutdan gösterebiliyorum. benim sorum ise daha sonra istediğim şiirin ya da şarkı sözünün bulunması için herhangi bir kelime yazıp arama yaptığımda bulabilme ihtimalim olur mu? arama yapabileceğim bir bölüm oluşturmk istersem eğer. veritabanı yönetemini beceremedim. bu yöntem kullanışlı olur mu?
aynı imza güncelleme
Kullanımda olan uygulamamı güncellemek istiyorum. Güncelleme yaparken pcdeki yedek paket dosyalrımda hata alıyorum. Tamamen farklı bir tasarım ile güncelleme yapmak istiyorum. Buradaki sorum şudur.
Uygulamam kullanan kullanıcılara güncelleme olarak gidecek yani cihazlarındaki uygulamayı kullanmaya devam edecekler sadece güncelleme yapacaklar iptal olmayacak.
Burada paket adının aynı olması gerekli mi? İmza dosyam bende mevcut. Paket adı değişik olan bir uygulamayı aynı eski imza dosyamı kullanarak google play'e yüklemek istersem eski uygulamayı güncellemiş olur muyum? Güncelleme yaparken eski imza dosyamı kullanmak istiyorum ama paket adını nasıl yapmalıyım. Değişik bir paket adı kullanarak aynı imza dosyası ile kullanımdaki uygulamayı güncelleyebilir miyim? Hata çıkar mı?
Hata çıkarsa eski uygulama paket adının aynısı ile yeni bir uygulama mı oluşturmalıyım?
Şu ankı uygulamamın kullanıcı sayısını kaybetmek istemiyorum bir de kullanıcıların zorlanıp eski uygulama - yeni uygulama gibi karışıklığa düşmelerini istemiyorum.
Çok teşekkürler şimdiden.
database'den veri çekme (SQLite veritabanı)
cevap bulabilecek birisi yok mu yani?
fragment ile database
[code]
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;
}
[/code]
[code]
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.
[/code]
Türkü Sözü repertuvarı uygulaması hakkında
Bilgilendirme için teşekkürler çalışmalara başlayacağım. Başka düşüncesi olan varsa düşüncelerinizi paylaşmanız açısından mutlu olurum.
browser için geri tuşu
teşekkür ederim çalıştı.
peki browser da geri tuşuna bastığımda sayda kaldığım yere aynen geri dönmesi için ne yapmam gerekli?
Genymotion Kullanımı
http://emrealtunbilek.com/page/6/
bu adresteki anlatımlarda çok açık bir şekilde anlatılmıştır.