所以我试图拉一个名为" totalWater"的整数。从我的SQLite数据库,但当我尝试拉它然后将其添加到另一个数字时,它显示我从数据库中提取的数字为零。我不确定我是否错了,或者我是否错误地将数值存储到数据库中。
这是我的代码,用于处理数据库的拉动和推送:
//pull data
data = new Database(SetupTimerPC1.this);
data.open();
totalWater = data.getWaterAmt();
data.close();
//add new data to old
totalWater+=waterAmt;
//push data
data.open();
data.waterAmountEntry(totalWater);
data.close();
这是处理waterAmt的数据库中的函数:
public int getWaterAmt()
{
int waterAmount = 0;
String[] columns = new String[] {KEY_ROWID, KEY_ROCK, KEY_METEORROCK, KEY_WATER,
KEY_POPULATION, KEY_SHOVEL, KEY_BUCKET, KEY_PICKAXE, KEY_SHOVELEXP,
KEY_BUCKETEXP, KEY_PICKAXEEXP};
Cursor c = ourDatabase.query(DATABASE_TABLE, columns, null, null, null, null, null);
if (c != null && c.getCount() > 0)
{
c.moveToFirst();
iWaterAmount = c.getColumnIndex(KEY_WATER);
waterAmount = c.getInt(iWaterAmount);
return waterAmount;
}//end if return 0;
}//end getWaterAmt function
这是我的waterAmountEntry函数,用于输入进入数据库的水量:
public long waterAmountEntry(int waterAmt)
{
ContentValues cv = new ContentValues();
cv.put(KEY_WATER, waterAmt);
return ourDatabase.insert(DATABASE_TABLE, null, cv);
}//end waterAmountEntry function
任何帮助将不胜感激。感谢。
答案 0 :(得分:0)
检查
if (cursor != null && cursor.getCount() > 0) {...}
然后您将知道您是否存储了记录。
答案 1 :(得分:0)
data.createEntry(0,0,totalWater,0,0,0,0,0,0,0);
&安培;
String [] columns = new String [] {KEY_ROWID,KEY_ROCK,KEY_METEORROCK,KEY_WATER, KEY_POPULATION,KEY_SHOVEL,KEY_BUCKET,KEY_PICKAXE,KEY_SHOVELEXP, KEY_BUCKETEXP,KEY_PICKAXEEXP};
列不匹配
答案 2 :(得分:0)
添加一个以c.moveToFirst()开头的for循环,条件为!c.isafterlast(),并在if语句中用c.movetonext()递增,检查游标是否为null,这样我就可以解决问题:
for (c.moveToFirst(); !c.isAfterLast(); c.moveToNext())
{
iWaterAmount = c.getColumnIndex(KEY_WATER);
waterAmount = c.getInt(iWaterAmount);
}//end for
c.close();