我在 android 上制作应用程序,我使用 Sqlite 数据库。基本上,该应用程序只是插入一些数字,然后浏览所有行以获得这些数字的总和。每次单击按钮时都会这样做。
但问题是,实际上该应用程序运行良好。我只是换了一张小照片,然后在我的手机上再次运行该应用程序,但它停止计算这些数字的总和。我使用调试选项来查看数字是否正确插入并且实际上是正确插入的。但我发现游标没有从查询中获取任何行。我不知道问题是什么。我真的不记得改变代码,只是用油漆改变图片。我检查了行名、表名,一切正常。我什至在绝望中做了 ctrl+z,但没有任何改变。我从手机上卸载了该应用程序,清理,构建然后再次运行它并获得相同的结果。
这是此操作中涉及的代码。
public void crearTablas (SQLiteDatabase bd){
bd.execSQL("Create Table If Not Exists Gasto (ID Integer Primary Key, Descripcion Text Not Null, Costo Real Not Null, Fecha_Creado Datetime not null);");
}
public void insertarGasto(String descripcion, double costo, String fechaCreado{
ContentValues valores=new ContentValues();
valores.putNull("ID");
valores.put("Descripcion", descripcion);
valores.put("Costo", costo);
valores.put("Fecha_Creado", fechaCreado);
bd.insert("Gasto", null, valores);
}
public void crearGastoVar(String descripcion, double costo){
//redondear(double) is working well, i verified it!
bd.insertarGasto(descripcion, this.redondear(costo), fecha.get(Calendar.DATE)+"-"+(fecha.get(Calendar.MONTH)+1)+"-"+fecha.get(Calendar.YEAR));
}
public Cursor obtenerGastosVar(String fecha1, String fecha2){
return bd.query("Gasto", null, "Fecha_Creado between '"+fecha1+ "' and '"+fecha2+"'", null, null, null, null, null);
}
public double caluclarCostoGstsVar(){
Cursor c = bd.obtenerGastosVar("1-"+(fecha.get(Calendar.MONTH)+1)+"-"+fecha.get(Calendar.YEAR),
fecha.getActualMaximum(Calendar.DAY_OF_MONTH)+"-"+(fecha.get(Calendar.MONTH)+1)+"-"+fecha.get(Calendar.YEAR));
double costo=0;
if(c.moveToFirst()){ //This is returning false!!
do{
try{
Log.i("Look", "Sum is:"+costo);
costo+=Double.parseDouble(c.getString(c.getColumnIndex("Costo")));
}
catch(NumberFormatException e){
Log.i("Look", "Types are wrong");
return -2;
}
}while(c.moveToNext());
}
return redondear(costo);
}
String descrip_ = "number1";
double costo_ = 1000;
//I called before, crearTablas() so the tables are created before start inserting and reading
admin.crearGastoVar(descrip_, costo_);
admin.caluclarCostoGstsVar();