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