2

アプリケーションにいくつかのコードがありますが、テーブルを挿入するとエラーが発生します。どうしてか分かりません。誰でも私を助けることができますか??

これは私のコードです:

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;
}

}
4

7 に答える 7

1

列名を置き換えるなど、上記の解決策を試してから、アプリケーションを再起動する前にデータを消去してください。

于 2013-03-12T06:16:47.857 に答える
0
于 2013-03-12T05:56:41.737 に答える
0

あなたは列名を与えてchiperteksいません chiper db.execSQL("CREATE TABLE if not exists pesanKeluar (id_pk INTEGER PRIMARY KEY AUTOINCREMENT, nama TEXT, nomortlp TEXT, chiperteks TEXT);");

于 2013-03-12T05:56:54.527 に答える
0

テーブル pesanKeluar には chiper という名前の列がありません

エラーは、すべてのテーブル pesanKeluar に chiperteks という列名があり、挿入するキー「chiper」を指定していることを示しています。

于 2013-03-12T05:57:16.247 に答える
0

chiper=00010101 nama=D nomor=536 03-11 17:27:33.725 の挿入エラー: E/Database(1664): android.database.sqlite.SQLiteException: テーブル pesanKeluar には chiper という名前の列がありません: 、コンパイル中: INSERT INTO pesanKeluar (チッパー、ナマ、ノーモア) VALUES(?, ?, ?);

関数の列がデータベースの列と同じではない場合に発生しました。データベースchiper named columeが存在するかどうか、またはデータベースにあるのと同じスペルであるかどうかを確認してください。

テーブルの作成中に列名を定義しchiperteks、データを挿入するときに間違って渡すとchiper、エラーが発生します。

使用する:

cv.put("chiperteks", k.getChiperteks());

その代わり:

cv.put("チップ", k.getChiperteks());

于 2013-03-12T05:57:43.397 に答える
0

列名はありますが、テーブルにchiperteksはありませんchiperpesanKeluar

交換

cv.put("chiper", k.getChiperteks());

cv.put("chiperteks", k.getChiperteks());
于 2013-03-12T05:58:58.020 に答える
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();
    }
于 2013-03-12T06:00:57.553 に答える