Java Android - 从SQLite数据库中提取变量的问题

时间:2014-05-24 04:41:16

标签: java android database sqlite

所以我试图拉一个名为" 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

任何帮助将不胜感激。感谢。

3 个答案:

答案 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();