Soru & Cevap

SQL veri işlemleri hakkında ...

20.05.2014 - 06:05

merhaba arkadaşlar androidde yeniyim videolara bakarak öğrendiğim kadarıyla veri tabanına veri eklemek istiyorum fakat program hata verip kapanıyor kodlarım aşağıdaki gibi nerede yanlış yapıyorum yardımcı olabilirmisiniz?

ekran.xml

[code]

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <EditText
        android:id="@+id/bilgi"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:ems="10" >

        <requestFocus />
    </EditText>

    <Button
        android:id="@+id/verigonder"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Button" />
</LinearLayout>[/code]

ekran.java

[code]

package com.fipro.bilgi;

import android.app.Activity;
import android.content.ContentValues;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;

public class ekran extends Activity{
    Button verigonderc;
    EditText veric;
    private veritabani v1;
    protected void onCreate(Bundle savedInstancestate)
    {
        super.onCreate(savedInstancestate);
        setContentView(R.layout.ekran);
        v1=new veritabani(this);
        verigonderc=(Button)findViewById(R.id.verigonder);
        veric=(EditText)findViewById(R.id.bilgi);
        
        verigonderc.setOnClickListener(new View.OnClickListener() {
            
            @Override
            public void onClick(View v) {
                try
                {
                ekleme(veric.getText().toString());
                }
                finally
                {
                    v1.close();
                }
                
            }

            private void ekleme(String veric) {
                SQLiteDatabase db = v1.getWritableDatabase();
                ContentValues cv1 = new ContentValues();
                cv1.put("bilgi", veric);
                db.insertOrThrow("bilgiler", null, cv1);
            }
        });    
    }
}

[/code]

3 Görüntülenme

2 Cevap

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

picture-8572-1421266577.png
mmnbsl
21.05.2014 - 11:19

-tablo adı için ayrı bir değişken tutsan daha hoş olur 

protected final static String TABLE_NAME ="bilgiler";

-Create table kısmındaki "bilgi TEXT" bundan sonraki virgülü sil.

-ekran class'ında try kullanmışsın catch bloğu eksik. hata çıkarsa yakalayamazsın.

-ekleme methodunda db.insertOrThrow("bilgiler",.....), yazmak yerine db.insertOrThrow(v1.TABLE_NAME,......); yazarsan daha güzel olur.

Fatih
21.05.2014 - 11:49
çok teşekkür ederim virgülü silince süper oldu :) fakat son dediğinizi anlayamadım acemilik kusura bakmayın db.insertOrThrow(v1.bilgiler, null, cv1); şeklindemi yazılacak? böyle denedim hata verdi
Mümin Başol
22.05.2014 - 09:37
veriTabani class'ında yukarıdaki gibi Table_name = "bilgiler", diye bir değişken oluşturdun mu ? sonra v1.bilgiler şeklinde değil, v1.TABLE_NAME yazdığında bilgiler tablosuna ulaşmış olursun. ilk yaptığın gibi de çalışır ama böyle yapman daha sağlıklı olur
Profile picture for user FATIH_999
FATIH_999
20.05.2014 - 08:25

Veritabanı.java

[code]

package com.fipro.bilgi;

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

public class veritabani extends SQLiteOpenHelper {
        
    private static final String VERITABANI = "bilgi";
    private static final int SURUM = 1;

    public veritabani(Context con){
        super(con,VERITABANI,null,SURUM);
        
        
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        db.execSQL("CREATE TABLE bilgiler (id INTEGER PRIMARY KEY AUTOINCREMENT, bilgi TEXT,);");
        
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        db.execSQL("DROP TABLE IF EXIST bilgiler");
        onCreate(db);
        
    }
    

}

[/code]