有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

安卓 studio 2.2中的java Sqlite

我在函数getfood的DESC中编写查询get error时出错。这是我的例外

例外情况:

崩溃开始

    E/AndroidRuntime: FATAL EXCEPTION: main

      Process: com.app.caloriescounter.admin.caloriescounter, PID: 2759
                      java.lang.RuntimeException: Unable to start activity 
    ComponentInfo{com.app.caloriescounter.admin.caloriescounter/com.app.caloriesc
    ounter.admin.caloriescounter.Main2Activity}: 
    java.lang.IllegalArgumentException: **invalid LIMIT clauses: DESC** 
             at 
    安卓.app.ActivityThread.performLaunchActivity(ActivityThread.java:2416)
                          at 
    安卓.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476)
                          at 安卓.app.ActivityThread.-wrap11(ActivityThread.java)
                          at 
    安卓.app.ActivityThread$H.handleMessage(ActivityThread.java:1344)
     at 安卓.os.Handler.dispatchMessage(Handler.java:102)
                          at 安卓.os.Looper.loop(Looper.java:148)
                          at 
    安卓.app.ActivityThread.main(ActivityThread.java:5417)
                          at java.lang.reflect.Method.invoke(Native Method)
                          at 
    com.安卓.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
                          at 
    com.安卓.internal.os.ZygoteInit.main(ZygoteInit.java:616)
                       Caused by: java.lang.IllegalArgumentException: invalid LIMIT clauses: DESC 
                          at 
    安卓.database.sqlite.SQLiteQueryBuilder.buildQueryString(SQLiteQueryBuilde
    r.java:209)
                          at 
   安卓.database.sqlite.SQLiteDatabase.queryWithFactory(SQLiteDatabase.java:1160)
                          at 
    安卓.database.sqlite.SQLiteDatabase.query(SQLiteDatabase.java:1034)
                          at 
    安卓.database.sqlite.SQLiteDatabase.query(SQLiteDatabase.java:1240)
                          at 
    data.Databasehandler.getfood(Databasehandler.java:86)
                          at 
com.app.caloriescounter.admin.caloriescounter.Main2Activity.refreshdata(Main2Activity.java:38)
                          at com.app.caloriescounter.admin.caloriescounter.Main2Activity.onCreate(Main2Activity.java:32)
                          at 安卓.app.Activity.performCreate(Activity.java:6237)
                          at 
    安卓.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1107)
                          at 
    安卓.app.ActivityThread.performLaunchActivity(ActivityThread.java:2369)
                          at 
    安卓.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476) 

                          at 安卓.app.ActivityThread.-
    wrap11(ActivityThread.java) 
                          at 
    安卓.app.ActivityThread$H.handleMessage(ActivityThread.java:1344) 
                          at 
    安卓.os.Handler.dispatchMessage(Handler.java:102) 
                          at 安卓.os.Looper.loop(Looper.java:148) 
                          at 
    安卓.app.ActivityThread.main(ActivityThread.java:5417) 

这是我的Databasehandler类的源代码

    package data;
    import 安卓.content.ContentValues;
    import 安卓.content.Context;
    import 安卓.database.Cursor;
    import 安卓.database.sqlite.SQLiteDatabase;
    import 安卓.database.sqlite.SQLiteOpenHelper;
    import 安卓.util.Log;
    import java.text.DateFormat;
    import java.util.ArrayList;
    import java.util.Date;
    import model.Food;

    /**
     * Created by Admin on 9/10/2016.
     */
    public class Databasehandler extends SQLiteOpenHelper {
        private static final String LOGCAT = null;
        private final ArrayList<Food> foodArrayList=new ArrayList<>();
        public Databasehandler(Context context) {
            super(context,Constsnts.databasename,null,Constsnts.databaseversion);
            Log.d(LOGCAT,"Database Created");
        }
        @Override
        public void onCreate(SQLiteDatabase sqLiteDatabase) {
    String Crete_Table="CREATE TABLE "+ Constsnts.food_table+" ( " + 
    Constsnts.KeyId +"INTEGER PRIMARY KEY, " + Constsnts.food_name +"TEXT, "
            +Constsnts.foodcalories +"INT , "+Constsnts.datename +"LONG );";
        sqLiteDatabase.execSQL(Crete_Table);
        }
        @Override
        public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1) {
    sqLiteDatabase.execSQL("DROP TABLE IF EXISTS "+Constsnts.food_table);
        //new one
            onCreate(sqLiteDatabase);
        }
        //item all
        public int getTotalitem(){
            int totalitem=0;
            String query=" SELECT * FROM "+Constsnts.food_table;
            SQLiteDatabase db=this.getReadableDatabase();
            Cursor cursor=db.rawQuery(query,null);
            totalitem=cursor.getCount();
            cursor.close();
            return totalitem;
        }
    public  int Caloriesall(){
            int calories=0;
            String query="SELECT SUM ( "+Constsnts.foodcalories +")"+"FROM 
    "+Constsnts.food_table;
            SQLiteDatabase db=this.getReadableDatabase();
            Cursor cursor=db.rawQuery(query,null);
            if(cursor.moveToNext()){
                calories=cursor.getInt(0);
            }
            cursor.close();
            db.close();
            return  calories;
        }
        //deletefood
        public void deletefood(int id){
           SQLiteDatabase db=this.getWritableDatabase();
            db.delete(Constsnts.food_table,Constsnts.KeyId+" =? ",new String[]
    {String.valueOf(id)});
            db.close();
        }
        //add food
        public void addfood(Food food){
        SQLiteDatabase db=this.getWritableDatabase();
        ContentValues values=new ContentValues();
        values.put(Constsnts.food_name,food.getFoodname());
            values.put(Constsnts.foodcalories,food.getCaleries());
            values.put(Constsnts.datename,System.currentTimeMillis());
            db.insert(Constsnts.food_table,null,values);
            Log.v("Added food item","yess");
            db.close();
        }
        //get all food
        public ArrayList<Food> getfood(){
            foodArrayList.clear();
            SQLiteDatabase db=this.getReadableDatabase();
            Cursor cursor=db.query(Constsnts.food_table,new String[]
    {Constsnts.KeyId,Constsnts.databasename,
Constsnts.foodcalories,Constsnts.datename},null,null,null,null,Constsnts.datename," DESC ");
            if(cursor.moveToFirst()){
                do {
                    Food food=new Food();
    food.setFoodname(cursor.getString(cursor.getColumnIndex(Constsnts.food_name)));
    food.setCaleries(cursor.getInt(cursor.getColumnIndex(Constsnts.foodcalories)));
    food.setFoodid(cursor.getInt(cursor.getColumnIndex(Constsnts.KeyId)));
                    DateFormat dateFormat=DateFormat.getDateInstance();
                    String data=dateFormat.format(new 
    Date(cursor.getLong(cursor.getColumnIndex(Constsnts.datename))).getTime());
                    food.setRecorddate(data);
                    foodArrayList.add(food);
                }while(cursor.moveToNext());
            }
    cursor.close();
            db.close();
            return foodArrayList;
        }
    }

提前谢谢


共 (0) 个答案