gpt4 book ai didi

java - 将 SQLite 数据库中的初始列值设置为 0

转载 作者:太空狗 更新时间:2023-10-29 14:19:27 24 4
gpt4 key购买 nike

我正在制作一个应用程序,其中有一个名为“Full tank”的复选框。如果我选中此框,我必须计算值(value)里程并将其保存到数据库中。如果未选中此框,则不计算里程,里程列中存储 0。但是,当我第一次进入我的数据库时,无论复选框是否被选中,我都希望里程数为 0。

谁能帮我想想这个主意?这是我到目前为止已经尝试过的东西,但是这段代码也会为第一行生成里程数:-

    public void calculateMileage(FuelExpense fe) 
{

// TODO Auto-generated method stub
String [] columns = new String[]{KEY_ROW_ID, KEY_KM, KEY_FUEL_QTY, KEY_FUEL_PRICE, KEY_TOTAL_COST, KEY_MILEAGE, KEY_DATE,KEY_TANK_FULL};

long numRows = DatabaseUtils.queryNumEntries(ourDatabase, "fuel_table");
if(fe.getTankFullstatus()==true)
{
mileageCursor = ourDatabase.rawQuery("SELECT * FROM fuel_table ORDER BY _id DESC LIMIT 1", null);

if(mileageCursor!=null && mileageCursor.getCount()>0)
{

mileageCursor.moveToLast();

String lastKm = mileageCursor.getString(1);
String lastFuelQty = mileageCursor.getString(2);

lastDBFuelEntry.setKm(Long.parseLong(lastKm));
lastDBFuelEntry.setFuelQty(Double.parseDouble(lastFuelQty));
}
else
{
mileage = 0.0d;
}

}
else
{

for(mileageCursor.moveToLast();!mileageCursor.isBeforeFirst();mileageCursor.moveToPrevious())
{
nftQty = nftQty+lastDBFuelEntry.getFuelQty();

}

}
fuelUsed = nftQty + fe.getFuelQty();
mileage =(fe.getKm() - lastDBFuelEntry.getKm())/ fuelUsed;
mileage= (double)(Math.round(mileage*100))/100;
fe.setMileage(mileage);
}

Table creation:-
//Fuel info table
db.execSQL( "CREATE TABLE "+FUEL_DATABASE_TABLE +" (" +
KEY_ROW_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " +
KEY_KM + " LONG NOT NULL, "+
KEY_FUEL_QTY + " INTEGER NOT NULL, "+
KEY_FUEL_PRICE + " DOUBLE NOT NULL, "+
KEY_TOTAL_COST + " DOUBLE NOT NULL, "+
KEY_MILEAGE + " DOUBLE DEFAULT 0, "+
KEY_DATE + " DATE NOT NULL, "+
KEY_TANK_FULL + " TEXT);"
);

Insert:-
{
// TODO Auto-generated method stub


ContentValues cv = new ContentValues();
cv.put(KEY_KM, fe.getKm());
cv.put(KEY_FUEL_QTY, fe.getFuelQty());
cv.put(KEY_FUEL_PRICE,fe.getFuelPrice());
cv.put(KEY_TOTAL_COST, fe.getTotalCost());
cv.put(KEY_MILEAGE, fe.getMileage());
cv.put(KEY_DATE, fe.getFuelFilledDate());
cv.put(KEY_TANK_FULL, fe.getTankFullstatus());
return ourDatabase.insert(FUEL_DATABASE_TABLE, null, cv);
}

最佳答案

如果我没理解错的话,

如果你的数据库中只有一个条目,你不想计算,只显示一个零。

我想你需要做的就是改变这个:

if(mileageCursor!=null && mileageCursor.getCount()>0

为此:

if(mileageCursor!=null && mileageCursor.getCount()>1

然后,如果您的数据库中只有一个条目,则计算结果将为 0。我假设您的代码被吓坏了,因为您只有一个条目,但它试图在您的光标上调用 moveToPrevious()

关于java - 将 SQLite 数据库中的初始列值设置为 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18223692/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com