Soru & Cevap

Android studio sqlite data görmüyor

27.05.2017 - 09:36

Merhaba arkadaşlar. Anroid studio kullanarak database oluşturdum ama uygulamada hiçbir hata yok çalıştırdığımda main activity çalışıyor iki buton var butona bastığımda ekleme sayfasına girmiyor program durduruyor. Device data'da database mi de göremiyorum ne yapsam olmadı nerde hatam var anlayamadım. Yardımcı olur musunuz?

Database sayfam;

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;

class Database extends SQLiteOpenHelper {
    /*Veritabanı adı belirledik.*/
    static final String DATABASE_NAME = "VERITABANI";
    /*Tablo adı belirledik.*/
    static final String TABLE_NAME = "KITAPLARTBL";
    /*Tabloda bulunacak tüm alanlar aşağıdaki gibidir.*/
    static final String ID = "ID";
    static final String KITAP_ADI = "KITAP_ADI";
    static final String YAZAR_ADI = "YAZAR_ADI";
    static final String SAYFA = "SAYFA";
    static final String YAYINEVI = "YAYINEVI";
    /*Veritabanı versiyonu 1 olacak.*/
    static final int DATABASE_VERSION = 1;
    /*Tablo oluşturmak için SQL cümlemiz*/
    static final String TABLE_CREATE = "CREATE TABLE " + TABLE_NAME + "("
            + ID + " INTEGER PRIMARY KEY AUTOINCREMENT, "
            + KITAP_ADI + " TEXT NOT NULL, "
            + YAZAR_ADI + " TEXT NOT NULL, "
            + SAYFA + " TEXT NOT NULL, "
            + YAYINEVI + " TEXT NOT NULL);";

    Database(Context context) {
            /*Veritabanı oluşturulur.*/
        super(context, DATABASE_NAME, null, DATABASE_VERSION);
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
            /*Tablo oluşturulur.*/
        db.execSQL(TABLE_CREATE);
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
            /*Veritabanını güncellemek için kullanılır.*/
        db.execSQL("DROP TABLE IF EXISTS ");
        onCreate(db);
    }
}

Kitap ekleme

import android.content.ContentValues;
import android.net.Uri;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

public class AddNewBook extends AppCompatActivity implements View.OnClickListener {
    EditText etKitapAdi;
    EditText etYazarAdi;
    EditText etKitapSayfa;
    EditText etYayinevi;
    Button btnSave;
    @Override

    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_add_new_book);
        getConrolViews();
        setClickForView();

    }
    private void getConrolViews() {
        etKitapAdi=(EditText)findViewById(R.id.etKitapAdi);
        etYazarAdi=(EditText)findViewById(R.id.etYazarAdi);
        etKitapSayfa=(EditText)findViewById(R.id.etKitapSayfa);
        etYayinevi=(EditText)findViewById(R.id.etYayinevi);
        btnSave=(Button)findViewById(R.id.btnSave);
    }
    private void setClickForView() {
        btnSave.setOnClickListener(this);
    }

    @Override
    public void onClick(View v) {
        /*EditText kontrollerine girilen veriler alınır ve değişkenlere atanır.*/
        String kitapAdi = etKitapAdi.getText().toString();
        String yazarAdi = etYazarAdi.getText().toString();
        String sayfa = etKitapSayfa.getText().toString();
        String yayinevi = etYayinevi.getText().toString();
        /*Kitap ekleme kodu. Gelen bilgiler, ContentValues içine eklenir.*/
        ContentValues values = new ContentValues();
        values.put(Database.KITAP_ADI, kitapAdi);
        values.put(Database.YAZAR_ADI, yazarAdi);
        values.put(Database.SAYFA, sayfa);
        values.put(Database.YAYINEVI, yayinevi);
        /*kitap eklenir ve gelen uri bilgisi değişkene atanır.*/
        Uri uri = getContentResolver().insert(Books.CONTENT_PROVIDER_URI, values);
        Toast.makeText(getBaseContext(), uri.toString(), Toast.LENGTH_LONG).show();
    }
}

 

336 Görüntülenme

1 Cevap

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

picture-57989-1451678910.jpg
serdarşen
29.05.2017 - 12:08

Merhaba şunu bir deneyebilir misin? Uygulamayı kaldır. AUTOINCREMENT ifadesini sil. Uygulamayı tekarar yükle.

Aşağıdaki saflardan anladığım kadarıyla, INTEGER PRIMARY KEY yazmak autoincrement olması için yeterli oluyormuş.

http://www.sqlite.org/faq.html#q1

https://stackoverflow.com/questions/30785004/android-sqlite-application-unfortunately-has-stopped

https://stackoverflow.com/questions/17331754/attempting-to-add-entries-to-sqlite-database-stops-app-from-working