Android Studio Sql Lite database güncelleme ?
29.05.2018 - 09:07
Merhaba arkadaslar Android Studio da sql lite kullanıyorum. Database sınıfı kodlarım aşağıdaki gibi
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import java.util.ArrayList;
import java.util.HashMap;
/**
* Created by METEHAN on 17.11.2017.
*/
public class Database extends SQLiteOpenHelper {
// All Static variables
// Database Version
private static final int DATABASE_VERSION = 1;
// Database Name
private static final String DATABASE_NAME = "login_database";//database adı
private static final String TABLE_NAME = "loginn";
private static String KULLANICI_ID = "id";
private static String KULLANICI_MAIL = "mail";
private static String KULLANICI_SIFRE = "sifre";
private static String KAYIT_TARIHI = "tarih";
private static String ADI = "adi";
private static String SOYADI = "soyadi";
public Database(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) { // Databesi oluşturuyoruz.Bu methodu biz çağırmıyoruz. Databese de obje oluşturduğumuzda otamatik çağırılıyor.
String CREATE_TABLE = "CREATE TABLE " + TABLE_NAME + "("
+ KULLANICI_ID + " INTEGER PRIMARY KEY,"
+ KULLANICI_MAIL + " TEXT,"
+ KULLANICI_SIFRE + " TEXT,"
+ KAYIT_TARIHI + " TEXT,"
+ ADI + " TEXT,"
+ SOYADI + " TEXT" + ")";
db.execSQL(CREATE_TABLE);
}
public void kullaniciEkle(String mail,String sifre,String tarih,String adi,String soyadi) {
//kullaniciEkle methodu ise adı üstünde Databese veri eklemek için
SQLiteDatabase db = this.getWritableDatabase();
ContentValues values = new ContentValues();
values.put(KULLANICI_MAIL, mail);
values.put(KULLANICI_SIFRE, sifre);
values.put(KAYIT_TARIHI, tarih);
values.put(ADI, adi);
values.put(SOYADI, soyadi);
db.insert(TABLE_NAME, null, values);
db.close(); //Database Bağlantısını kapattık*/
}
public ArrayList<HashMap<String, String>> kitaplar(){
//Bu methodda ise tablodaki tüm değerleri alıyoruz
//ArrayList adı üstünde Array lerin listelendiği bir Array.Burda hashmapleri listeleyeceğiz
//Herbir satırı değer ve value ile hashmap a atıyoruz. Her bir satır 1 tane hashmap arrayı demek.
//olusturdugumuz tüm hashmapleri ArrayList e atıp geri dönüyoruz(return).
SQLiteDatabase db = this.getReadableDatabase();
String selectQuery = "SELECT * FROM " + TABLE_NAME;
Cursor cursor = db.rawQuery(selectQuery, null);
ArrayList<HashMap<String, String>> kitaplist = new ArrayList<HashMap<String, String>>();
// looping through all rows and adding to list
if (cursor.moveToFirst()) {
do {
HashMap<String, String> map = new HashMap<String, String>();
for(int i=0; i<cursor.getColumnCount();i++)
{
map.put(cursor.getColumnName(i), cursor.getString(i));
}
kitaplist.add(map);
} while (cursor.moveToNext());
}
db.close();
return kitaplist;
}
public HashMap<String, String> kullaniciDetay(){
//Bu methodda sadece tek row değerleri alınır.
//HashMap bir çift boyutlu arraydir.anahtar-değer ikililerini bir arada tutmak için tasarlanmıştır.
//mesala map.put("x","300"); mesala burda anahtar x değeri 300.
HashMap<String,String> kisi = new HashMap<String,String>();
String selectQuery = "SELECT * FROM " + TABLE_NAME;
SQLiteDatabase db = this.getReadableDatabase();
Cursor cursor = db.rawQuery(selectQuery, null);
cursor.moveToFirst();
if(cursor.getCount() > 0){
kisi.put(KULLANICI_MAIL, cursor.getString(1));
kisi.put(KULLANICI_SIFRE, cursor.getString(2));
kisi.put(KAYIT_TARIHI, cursor.getString(3));
kisi.put(ADI, cursor.getString(4));
kisi.put(SOYADI, cursor.getString(5));
}
cursor.close();
db.close();
return kisi;
}
public int getRowCount() { //tabloda kaç satır kayıtlı olduğunu geri döner
String countQuery = "SELECT * FROM " + TABLE_NAME;
SQLiteDatabase db = this.getReadableDatabase();
Cursor cursor = db.rawQuery(countQuery, null);
int rowCount = cursor.getCount();
db.close();
cursor.close();
// return row count
return rowCount;
}
public void resetTables(){
// Tüm verileri siler. tabloyu resetler.
SQLiteDatabase db = this.getWritableDatabase();
db.delete(TABLE_NAME, null, null);
db.close();
}
@Override
public void onUpgrade(SQLiteDatabase arg0, int arg1, int arg2) {
// TODO Auto-generated method stub
}
}
Şimdi ben bu veritabanına mail şifre tarih isim soyisim yanına yeni bir sütün eklemek istiyorum uygulamayı biri ilk yüklediğinde sorun yok ama hazırda kullananlar güncellediğinde veritabanından hiç veri çekilemiyor bu sorunu nasıl aşabilirim
234
Görüntülenme
0 Beğeni