我有下一个代码来创建我的数据库。
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"。¿发生了什么,我不知道?感谢您的帮助
您可能正在使用较旧版本的数据库。清除应用的数据,然后重试:
设置 -->应用程序 --> 管理应用程序 -->[您的应用程序] --> 清除数据
您的代码似乎很好,但是我会检查现有数据库。检查"提议"表中的列名。您可以通过按照以下步骤在sqlite3中打开数据库来做到这一点(显然在执行步骤之前将手机连接到PC)
adb shell
cd /data/data/<your.applications.package>/databases
sqlite3 <databases_name>
.schema
查看表格是否真的有"CuandoInferir"列。如果没有,请尝试重新创建表。