我的数据库中有一个表,就是这样创建的:
private static String crea_Fichas="CREATE TABLE fichas ("+
"provincia VARCHAR (40), "+
"municipio VARCHAR (40), "+
"distrito VARCHAR (40), "+
"codficha INTEGER, "+
"codagente INTEGER, "+
"domitri VARCHAR(80), "+
"domfiscal VARCHAR(80), "+
"CIERNC VARCHAR(13), "+
"nombrecompleto VARCHAR (255), "+
"telf1 VARCHAR(12), "+
"telf2 VARCHAR(12), "+
"fax VARCHAR(12), "+
"razonsocial VARCHAR(255), "+
"nombrecomercial VARCHAR(255), "+
"email VARCHAR(50), "+
"codexpediente INTEGER, "+
"croquis BYTEA, "+
"codtipoactividad INTEGER, "+
"primary key(codficha), "+
"foreign key (codtipoactividad) references tiposactividades(codtipoactividad), " +
"foreign key (codexpediente) references expedientes (codexpediente), "+
"foreign key (codagente) references agentes(codagente));";
稍后在我的计划中,我想这样做:
private void deleteExpediente(long codficha) {
Cursor cursorBorra=db.rawQuery("DELETE FROM fichas where codficha='"+codficha+"'", null);
dbHelper.copiarDb();
}
但是,这样,没有一行受到影响。我已经检查过codficha是否存在,数据库是否为空等等。没有抛出异常,只是...没有删除行。 copiarDb()是一种将我的数据库复制到我的设备中的另一个位置的方法(没有root,所以我看不到数据库)并且在那里我检查该行还没有被删除。
知道为什么我不能删除那一行?谢谢。
答案 0 :(得分:1)
ifRoom
rawQuery返回结果集的Cursor,它只是对查询结果的引用。你应该只是使用直接的delete()调用。看一下文档:
http://developer.android.com/reference/android/database/sqlite/SQLiteDatabase.html
或SQLiteStatement:
http://developer.android.com/reference/android/database/sqlite/SQLiteStatement.html