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 回答