0

データベースを作成する次のコードがあります。

public class ModeloPaciente extends SQLiteOpenHelper {
//Tabla Proposicion Condicional
static final String proposicionCondicionalTabla="ProposicionCondicional";
static final String colproposicionCondicionalID="ProposicionCondicionalID";
static final String colproposicionCondicionalDescripcion="ProposicionCondicionalDescripcion";
static final String colproposicionCondicionalcuandoInferirForeign="CuandoInferir";

public ModeloPaciente(Context context) {
    super(context, dbName, null, 1);
}

@Override
public void onCreate(SQLiteDatabase db) {    

db.execSQL("CREATE TABLE "+proposicionCondicionalTabla+" " +
"("+colproposicionCondicionalID+ " INTEGER PRIMARY KEY AUTOINCREMENT, " +
colproposicionCondicionalDescripcion+ " TEXT NOT NULL," +
colproposicionCondicionalcuandoInferirForeign+" INTEGER NOT NULL,"+
"FOREIGN KEY ("+colproposicionCondicionalcuandoInferirForeign+") REFERENCES    "+cuandoInferirTabla+"    
("+colcuandoInferirID+"));");             
}

後で、このようにテーブル内にデータを入れます

public boolean insertarProposicion(Proposicion proposicion) {
    try {
           SQLiteDatabase db=this.getWritableDatabase();
           ContentValues cv= new ContentValues();
           cv.put(colproposicionCondicionalDescripcion, proposicion.getProposicionCondicionalDescripcion());               
           cv.put(colproposicionCondicionalcuandoInferirForeign, getCuandoInferirID(proposicion.getProposicionCondicionalCuandoInferirForeign()));
           db.insert(proposicionCondicionalTabla, colproposicionCondicionalID, cv);
         //db.close();
           return true;
    } catch (Exception e) {
        System.out.println(e);
        return false;
    }

しかし、次のようなエラーが表示されます。

06-07 15:36:15.507: E/Database(257): Error inserting CuandoInferir=1 ProposicionCondicionalDescripcion=Se debe inferir acerca de los dias de marcha realizados o no
06-07 15:36:15.507: E/Database(257): android.database.sqlite.SQLiteException: no such column: CuandoInferir: , while compiling: INSERT INTO ProposicionCondicional(CuandoInferir, ProposicionCondicionalDescripcion) VALUES(?, ?);

そして、データベースをチェックすると、対応する列「CuandoInferir」があります.. 何が起こるかわかりませんか? ご協力いただきありがとうございます

4

2 に答える 2

1

古いバージョンのデータベースを使用している可能性があります。アプリのデータを消去して、もう一度お試しください:

Settings--> Applications--> Manage applications--> [your app]-->Clear data

于 2012-06-07T20:09:31.430 に答える
0

あなたのコードは問題ないようですが、既存のデータベースを確認します。「ProposicionCondicional」テーブルの列名を確認してください。次の手順に従って、sqlite3 でデータベースを開くことで実行できます (手順を実行する前に、電話を PC に接続してください)。

adb shell
cd /data/data/<your.applications.package>/databases
sqlite3 <databases_name>
.schema

テーブルに「CuandoInferir」列が本当にあるかどうかを確認します。そうでない場合は、テーブルを再作成してみてください。

于 2012-06-07T20:04:43.947 に答える