我的应用程序中有一些代码,但是当我插入表时出现错误。一世 不知道为什么。谁能帮助我?
这是我的代码:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.tambahpenerima);
data = new dbHelper(this);
db = data.getWritableDatabase();
data.createTable(db);
na = (TextView)findViewById(R.id.na);
no = (TextView)findViewById(R.id.no);
pesanx = (EditText)findViewById(R.id.hasilx);
Bundle paket = getIntent().getExtras();
nama = paket.getString("nama");
nomor = paket.getString("nomor");
hasil = paket.getString("chiper");
na.setText(nama);
no.setText(nomor);
pesanx.setText(hasil);
pesanKeluar objk = new pesanKeluar(nama, nomor, hasil);
inputDataK(db, objk); //here the error
}
public void inputDataK(SQLiteDatabase db, pesanKeluar k) {
ContentValues cv = new ContentValues();
cv.put("nama", k.getNama());
cv.put("nomortlp", k.getNomorTlp()); //here my modified
cv.put("chiperteks", k.getChiperteks()); //here my modified
db.insert("pesanKeluar", null, cv); //here my modified
db.close();
}
}
我修改了我的代码,但是我得到了和以前一样的错误。请看一下我的日志错误。
03-11 17:27:33.704: I/Database(1664): sqlite returned: error code =
1, msg = table pesanKeluar has no column named chiper
03-11 17:27:33.725: E/Database(1664): Error inserting
chiper=00010101 nama=D nomor=536
03-11 17:27:33.725: E/Database(1664):
android.database.sqlite.SQLiteException: table pesanKeluar has no column
named chiper: , while compiling: INSERT INTO pesanKeluar(chiper, nama,
nomor) VALUES(?, ?, ?);
这是我的dbHelper.java:
package com.databasesms;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
public class dbHelper extends SQLiteOpenHelper {
private static final String DATABASE_NAME = "dbenkripsisms.db";
public dbHelper ( Context context) {
super ( context, DATABASE_NAME, null, 1);
}
public void createTable ( SQLiteDatabase db) {
db.execSQL("CREATE TABLE if not exists tbPesan (id INTEGER PRIMARY KEY AUTOINCREMENT, plainteks TEXT, key TEXT, chiperteks TEXT);");
db.execSQL("CREATE TABLE if not exists pesanMasuk (id_pm INTEGER PRIMARY KEY AUTOINCREMENT, nama TEXT, nomortlp NUMBER, plainteks TEXT, key TEXT);");
db.execSQL("CREATE TABLE if not exists pesanKeluar (id_pk INTEGER PRIMARY KEY AUTOINCREMENT, nama TEXT, nomortlp TEXT, chiperteks TEXT);");
}
@Override
public void onCreate ( SQLiteDatabase arg0 ) {
}
@Override
public void onUpgrade ( SQLiteDatabase arg0, int arg1, int arg2 ) {
}
}
这是我的pesanKeluar.java:
package com.databasesms;
public class pesanKeluar {
private String nama;
private String nomortlp;
private String chiperteks;
public pesanKeluar () {
super();
}
public pesanKeluar ( String nama, String nomortlp, String chiperteks ) {
this.nama = nama;
this.nomortlp = nomortlp;
this.chiperteks = chiperteks;
}
public String getNama () {
return nama;
}
public void setNama ( String nama ) {
this.nama = nama;
}
public String getNomorTlp () {
return nomortlp;
}
public void setNomorTlp ( String nomortlp ) {
this.nomortlp = nomortlp;
}
public String getChiperteks () {
return chiperteks;
}
public void setChiperteks ( String chiperteks ) {
this.chiperteks = chiperteks;
}
}
答案 0 :(得分:1)
尝试上述解决方案,例如替换列名称,然后在重新启动应用程序之前清除数据。
答案 1 :(得分:0)
“没有列”错误明确指出,该列不存在您指定的表。所以要么你指的是错误的表,要么你的列名错误拼写错误。在您的情况下,您错误拼写了列名称。在创建表时,您已将第四列命名为chiperteks
,并且在将数据插入此列时,您将其称为chiper
,这是完全错误的。
更改如下,然后它将开始工作,
public void inputDataK(SQLiteDatabase db, pesanKeluar k) {
ContentValues cv = new ContentValues();
cv.put("nama", k.getNama());
cv.put("nomor", k.getNomorTlp());
cv.put("chiperteks", k.getChiperteks()); // Change here
db.insert("pesanKeluar", "nama", cv); //here the error
db.close();
}
答案 2 :(得分:0)
您已将列名称chiperteks
设为chiper
db.execSQL("CREATE TABLE if not exists pesanKeluar (id_pk INTEGER PRIMARY KEY AUTOINCREMENT, nama TEXT, nomortlp TEXT, chiperteks TEXT);");
答案 3 :(得分:0)
表pesanKeluar没有名为chiper的列
错误说你的所有表格pesanKeluar都有一个列名chiperteks ......而你正在给一个关键的“chiper”插入。
答案 4 :(得分:0)
插入chiper时出错= 00010101 nama = D nomor = 536 03-11 17:27:33.725:E / Database(1664):android.database.sqlite.SQLiteException:table pesanKeluar没有名为chiper:的列,同时编译: INSERT INTO pesanKeluar(chiper,nama,nomor)VALUES(?,?,?);
当你的函数中的列与数据库中的列不同时,检查你的数据库是否存在chiper named colume
或者你的数据库中是否有相同的咒语?
在创建表时将列名定义为chiperteks
,当插入数据时,您将错误传递为chiper
,这会导致错误。
使用:
cv.put(“chiperteks”,k.getChiperteks());
相反:
cv.put(“chiper”,k.getChiperteks());
答案 5 :(得分:0)
您的表chiperteks
chiper
但不是pesanKeluar
替换
cv.put("chiper", k.getChiperteks());
到
cv.put("chiperteks", k.getChiperteks());
答案 6 :(得分:0)
试试这个
public void inputDataK(SQLiteDatabase db, pesanKeluar k) {
ContentValues cv = new ContentValues();
cv.put("nama", k.getNama());
cv.put("nomortlp ", k.getNomorTlp()); // column name should be same as you define in Table
cv.put("chiperteks ", k.getChiperteks());
db.insert("pesanKeluar ", null, cv);
db.close();
}