J'ai une base de données sqlite statique dans Android. Une fonction prend un type d'entrée int et effectue une requête sur la base de données. Il fonctionne très bien les valeurs d'entrée jusqu'à de 97500, mais si je rentre tout plus grand que l'un des deux cas se produitRequête Android Sqlite renvoyant null
- Si l'entrée est 98,000-99,500 il renvoie null
- Si l'entrée supérieure à 100 000 il renvoie les données erronées
est ici la fonction qui est défectueux:
Budget getBudget(int income,String name)
{
Budget B=null;
Log.d("DB", String.valueOf(income));
try{
SQLiteDatabase db=this.getReadableDatabase();
Cursor cur=db.rawQuery("SELECT * FROM "+BudgetTable+" WHERE "+Low+"<=? AND "+High+">=?", new String[]{String.valueOf(income),String.valueOf(income)});
Log.d("DB", String.valueOf(cur.getCount()));
if(cur.getCount()!=0)
{
Log.d("DB", "Cursor not empty");
cur.moveToFirst();
B=new Budget(0, income,cur.getInt(cur.getColumnIndex(MortgageRent)),cur.getInt(cur.getColumnIndex(Utilities)) ,
cur.getInt(cur.getColumnIndex(LightnPower)), cur.getInt(cur.getColumnIndex(PhonenInternet)),
cur.getInt(cur.getColumnIndex(HomeMaintenance)), cur.getInt(cur.getColumnIndex(HomeCleaning)),
cur.getInt(cur.getColumnIndex(Groceries)), cur.getInt(cur.getColumnIndex(Clothing)),0,
cur.getInt(cur.getColumnIndex(PersonalGrooming)), cur.getInt(cur.getColumnIndex(MedicalnPharmacy)),
cur.getInt(cur.getColumnIndex(HealthInsurance)), cur.getInt(cur.getColumnIndex(LifeInsurance)),
cur.getInt(cur.getColumnIndex(HomeInsurance)), cur.getInt(cur.getColumnIndex(Accounting)),
cur.getInt(cur.getColumnIndex(BankFees)), cur.getInt(cur.getColumnIndex(Fuel)),
cur.getInt(cur.getColumnIndex(ServicenRepairs)), cur.getInt(cur.getColumnIndex(GovernmentCharges)),
cur.getInt(cur.getColumnIndex(CarInsurance)),0, cur.getInt(cur.getColumnIndex(PublicTransport)),
cur.getInt(cur.getColumnIndex(Entertainment)), cur.getInt(cur.getColumnIndex(SportsnGym)),
cur.getInt(cur.getColumnIndex(EatOut)), cur.getInt(cur.getColumnIndex(Alcohol)),
cur.getInt(cur.getColumnIndex(Gifts)), cur.getInt(cur.getColumnIndex(Holidays)),
cur.getInt(cur.getColumnIndex(NewspapernMagazine)), cur.getInt(cur.getColumnIndex(Others)), 0, 0, name);
Log.d("DB", String.valueOf(cur.getInt(cur.getColumnIndex(IncomeLevel))));
cur.close();
db.close();
}
}catch(Exception ex)
{
Log.d("DB", ex.getMessage());
}
return B;
}
Voici une capture d'écran des données dans la base de données ... Je ne peux pas comprendre pourquoi cela ne fonctionne pas.
Pas la requête est ce que je veux et retour corriger les données pour les entrées moins de 98000. J'ai joint une capture d'écran de la base de données aussi. Voir si le revenu = 98500 puis rowid = 17 devrait être choisi qui a bas = 97500 et haut = 102500 qui valide évidemment 97500 <= 98500 et 102500> = 98500. Mais son retour est nul. – Mehedi