Android 没有这样的表:ogrenci:,编译时:插入到

Android 没有这样的表:ogrenci:,编译时:插入到,android,sqlite,sqliteopenhelper,Android,Sqlite,Sqliteopenhelper,我试图配置一个简单的SQLiteOpenHelper,执行时出错 错误是: 表ogrenci没有名为field\uu final 在编写时: INSERT INTO ogrenci(field__final, field__numarasi, field_ad, field__vize, field__soyad) VALUES(?, ?, ?, ?, ?); 我想不出是什么问题 dbSQLite.javaclass: package com.example.sqllitevt; impor

我试图配置一个简单的
SQLiteOpenHelper
,执行时出错

错误是:

ogrenci
没有名为
field\uu final

在编写时:

INSERT INTO ogrenci(field__final, field__numarasi, field_ad, field__vize, field__soyad) VALUES(?, ?, ?, ?, ?);
我想不出是什么问题

dbSQLite.java
class:

package com.example.sqllitevt;

import android.content.ContentValues;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteException;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;

public class dbSQLite extends SQLiteOpenHelper {

    private static final String VERITABANI = "ogrenciler";
    private static final String TABLO_ADI = "ogrenci";
    private static final String KISI_ADI = "field_ad";
    private static final String KISI_SOYADI = "field__soyad";
    private static final String KISI_NUMARASI = "field__numarasi";
    private static final String KISI_VIZE = "field__vize";
    private static final String KISI_FINAL = "field__final";
    private static int SURUM = 1;

    public dbSQLite(Context context) {
        super(context, VERITABANI, null, SURUM);
        // TODO Auto-generated constructor stub
    }

    @Override 

    public void onCreate(SQLiteDatabase db) {
        // TODO Auto-generated method stub

          String sql = "CREATE TABLE " + TABLO_ADI + " ("
                                  + "id INTEGER PRIMARY KEY AUTOINCREMENT," 
                                  + KISI_ADI + " TEXT NOT NULL,"
                                  + KISI_SOYADI + " TEXT NOT NULL," 
                                  + KISI_NUMARASI + " TEXT" 
                                  + KISI_VIZE + "TEXT" 
                                  + KISI_FINAL + "TEXT" + ");";

        db.execSQL(sql);


    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        if (oldVersion >= newVersion)
            return;

        String sql = null;
        if (oldVersion == 1)
            sql = "alter table " + TABLO_ADI + " add note text;";
        if (oldVersion == 2)
            sql = "";

        Log.d("EventsData", "onUpgrade  : " + sql);
        if (sql != null)
            db.execSQL(sql);

    }


    public void kaydet(String k_ad, String k_soyad, String k_numara,
            String k_vize, String k_finali) {
        try{
        SQLiteDatabase db = this.getWritableDatabase();
        ContentValues cv=new ContentValues();

        cv.put(this.KISI_ADI, k_ad);
        cv.put(this.KISI_SOYADI, k_soyad);
        cv.put(this.KISI_NUMARASI, k_numara);
        cv.put(this.KISI_VIZE, k_vize);
        cv.put(this.KISI_FINAL, k_finali);

        db.insertOrThrow(this.TABLO_ADI,null,cv);

        Log.d("DB->Basarili","Basarılı");
        db.close();
        }catch(SQLiteException ex){
            Log.e("DB->Kayit", "Basarisiz oldu:"+ex.getMessage() );
        }

    }

}
ekle.java
Class:

package com.example.sqllitevt;

import android.os.Bundle; import android.app.Activity; import android.text.Editable; import android.view.Menu; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.TabHost; import android.widget.TabHost.TabSpec; import android.widget.Toast;

public class ekle extends Activity {    dbSQLite db;    Button kaydet;  EditText ad,soyad,numara,vize,finali;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.sekme_ekle);

        kaydet=(Button) findViewById(R.id.btnKaydet);
        ad=(EditText)findViewById(R.id.txtAd);
        soyad=(EditText)findViewById(R.id.txtSoyad);
        numara=(EditText)findViewById(R.id.txtNumara);
        vize=(EditText)findViewById(R.id.txtVize);
        finali=(EditText)findViewById(R.id.txtFinal);

        kaydet.setOnClickListener(new View.OnClickListener() {
                        public void onClick(View v) {
                db=new dbSQLite(getApplicationContext());

                String k_ad=ad.getText().toString();
                String k_soyad=soyad.getText().toString();
                String k_numara=numara.getText().toString();
                String k_vize= vize.getText().toString();
                String k_finali=finali.getText().toString();


                db.kaydet(k_ad, k_soyad, k_numara ,k_vize,k_finali);

                    Toast.makeText(getApplicationContext(), "Kayıt Edildi", Toast.LENGTH_LONG).show();  
                            }       });

    } }

CREATE TABLE
查询更改为:

     String sql = "CREATE TABLE " + TABLO_ADI + " ("
                              + "id INTEGER PRIMARY KEY AUTOINCREMENT, " 
                              + KISI_ADI + " TEXT NOT NULL, "
                              + KISI_SOYADI + " TEXT NOT NULL, " 
                              + KISI_NUMARASI + " TEXT, " 
                              + KISI_VIZE + "TEXT, " 
                              + KISI_FINAL + "TEXT );";

目前您没有在
KISI_NUMARASI
KISI_VIZE
KISI_FINAL
列之间添加,“,将
创建表
查询更改为:

     String sql = "CREATE TABLE " + TABLO_ADI + " ("
                              + "id INTEGER PRIMARY KEY AUTOINCREMENT, " 
                              + KISI_ADI + " TEXT NOT NULL, "
                              + KISI_SOYADI + " TEXT NOT NULL, " 
                              + KISI_NUMARASI + " TEXT, " 
                              + KISI_VIZE + "TEXT, " 
                              + KISI_FINAL + "TEXT );";

目前您没有在
KISI_NUMARASI
KISI_即
KISI_FINAL
列之间添加,“,请检查您的表是否有名为
field_FINAL
的列。我建议你重新制作桌子。错误表示列
字段\u final
不存在

考虑为列使用更简单的名称,例如,使用类似于
finalNotu
final\u notu
的名称,而不是
field\u final
。使用复杂的列名通常是个坏主意

我想这个方法会给你一个想法。。。此方法应属于您的
dbSQLHelper

public void reCreate() {
     SQLiteDatabase db = this.getWritableDatabase();
     db.execSQL("DROP TABLE IF EXISTS " + TABLO_ADI);
     String sql = "CREATE TABLE " + TABLO_ADI + " ("
                          + "id INTEGER PRIMARY KEY AUTOINCREMENT," 
                          + KISI_ADI + " TEXT NOT NULL, "
                          + KISI_SOYADI + " TEXT NOT NULL, " 
                          + KISI_NUMARASI + " TEXT, " 
                          + KISI_VIZE + "TEXT, " 
                          + KISI_FINAL + "TEXT" + ");"; 
     db.execSQL(sql);
     db.close();
}

检查您的表是否有一个名为
field\u final
的列。我建议你重新制作桌子。错误表示列
字段\u final
不存在

考虑为列使用更简单的名称,例如,使用类似于
finalNotu
final\u notu
的名称,而不是
field\u final
。使用复杂的列名通常是个坏主意

我想这个方法会给你一个想法。。。此方法应属于您的
dbSQLHelper

public void reCreate() {
     SQLiteDatabase db = this.getWritableDatabase();
     db.execSQL("DROP TABLE IF EXISTS " + TABLO_ADI);
     String sql = "CREATE TABLE " + TABLO_ADI + " ("
                          + "id INTEGER PRIMARY KEY AUTOINCREMENT," 
                          + KISI_ADI + " TEXT NOT NULL, "
                          + KISI_SOYADI + " TEXT NOT NULL, " 
                          + KISI_NUMARASI + " TEXT, " 
                          + KISI_VIZE + "TEXT, " 
                          + KISI_FINAL + "TEXT" + ");"; 
     db.execSQL(sql);
     db.close();
}

我不明白。如何更改?@ErkanYsrsn:i'我的意思是,您目前没有在create table QueryChange to String sql=“create table”+TABLO_ADI+”(“+”id INTEGER主键自动递增“+KISI_ADI+”TEXT not NULL“+KISI_SOYADI+”TEXT not NULL“,”KISI_SOYADI+”TEXT not NULL“,”+KISI_NUMARASI+“文本不为空,”+KISI_VIZE+“文本不为空,”+KISI_FINAL+“文本不为空”+”;但错误日志不会更改。@ErkanYsrsn:现在我认为您需要更改数据库version@ErkanYsrsn:将数据库版本更改为3我不明白。如何更改?@ErkanYsrsn:i'我的意思是,您目前没有在create table QueryChange to String sql=“create table”+TABLO_ADI+”(“+”id INTEGER主键自动递增“+KISI_ADI+”TEXT not NULL“+KISI_SOYADI+”TEXT not NULL“,”KISI_SOYADI+”TEXT not NULL“,”+KISI_NUMARASI+“文本不为空,”+KISI_VIZE+“文本不为空,”+KISI_FINAL+“文本不为空”+”;但错误日志不会更改。@ErkanYsrsn:现在我认为您需要更改数据库version@ErkanYsrsn:将数据库版本更改为3