Android Studio SQLite Manage

一、类DBHelper :

public class DBHelper extends SQLiteOpenHelper {

private static final String CREATE_TABLE_START_SQL = "CREATE TABLE IF NOT EXISTS ";

private static final String CREATE_TABLE_PRIMIRY_SQL = " integer primary key autoincrement,";

public DBHelper(Context context, String dbname, SQLiteDatabase.CursorFactory factory,int version)

{

super(context,dbname,null,1);

}

//数据库第一次创建时被调用

@Override

public void onCreate(SQLiteDatabase db) {

//CREATE TABLE person(personid INTEGER PRIMARY KEY AUTOINCREMENT,name VARCHAR(20))

StringBuffer mealSql = new StringBuffer();

mealSql.append(CREATE_TABLE_START_SQL).append(" meals ").append(" ( ");

mealSql.append(" id").append(CREATE_TABLE_PRIMIRY_SQL);

mealSql.append(" MealID").append(" varchar(32) default \"\" ,");

mealSql.append(" MealName").append(" varchar(150) default \"\" ,");

mealSql.append(" MState").append(" varchar(10) default \"\" ,");

mealSql.append(" TagID").append(" varchar(20) default \"\" ,");

mealSql.append(" ImgUrl").append(" varchar(250) default \"\" ,");

mealSql.append(" SellPrice").append(" double default 0 ,");

mealSql.append(" ForIndex").append(" double default 0 ,");

mealSql.append(" JLUnit").append(" double default 1 ,");

mealSql.append(" JLPrice").append(" double default 0 ");

mealSql.append(" )");

db.execSQL(mealSql.toString());

}

//软件版本号发生改变时调用

@Override

public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

//db.execSQL("ALTER TABLE person ADD phone VARCHAR(12) NULL");

}

}

二、类DBManager

复制代码
public class DBManager {
    private static DBManager instance;
    private static SQLiteOpenHelper mDBHelper;
    private SQLiteDatabase mDatabase;
    private AtomicInteger mOpenCounter = new AtomicInteger();
    /**
     *单例模式,初始化DBManager
     * @return
     */
    public  static  synchronized  DBManager getInstance()
    {
        if(instance==null){
            instance=new DBManager()   ;
        }
        return  instance;
    }

    /**
     *数据库初始化
     * @param context
     */
    public  void init(Context context)
    {
        if(context==null)   {return;}
        if(mDBHelper==null)
        {
            mDBHelper=new DBHelper(context.getApplicationContext(),"meals.db",null,1);
        }
    }
    /**
     * 释放数据库
     */
    public void release() {
        if (mDBHelper != null) {
            mDBHelper.close();
            mDBHelper = null;
        }
        instance = null;
    }
    /**
     * 打开数据库
     */
    public synchronized SQLiteDatabase openDatabase() {
        if (mOpenCounter.incrementAndGet() == 1) {
            // Opening new database
            try {
                mDatabase = mDBHelper.getWritableDatabase();
            } catch (Exception e) {
                //Log.e(TAG, "openDatabase e = " + e.getMessage());
                Logger.d("openDatabase e "+e.getMessage());
                mDatabase = mDBHelper.getReadableDatabase();
            }
        }
        return mDatabase;
    }
    /**
     * 关闭数据库
     */
    public synchronized void closeDatabase() {
        if (mOpenCounter.decrementAndGet() == 0) {
            // Closing database
            mDatabase.close();
        }
    }

    private void closeCursor(Cursor cursor) {
        if (cursor != null) {
            try {
                cursor.close();
            } catch (Throwable e) {
                //Log.e(TAG, "closeCursor e = " + e.getMessage());
            }
        }
    }

    /**
     * 保持菜品,如果已经存在菜品编号则更新,否则新增
     * @param meal
     * @return
     */
    public ResponseBean addmeal(dishmeal meal) {

        Cursor cursor =null;
        ResponseBean res = new ResponseBean();
        res.setSucceed(false);
        try {

            if (mDBHelper == null) {
                res.setData("未初始化 mDBHelper");
                return res;
            }
            SQLiteDatabase db = mDBHelper.getReadableDatabase();
            cursor = db.rawQuery("SELECT * FROM meals WHERE MealID = ?",
                    new String[]{meal.getMealID()});

                //存在数据才返回true
                if (cursor == null) {
                    res.setData("cursor==null");
                    return res;
                }
                if (cursor.getCount() > 0) {
                    //存在该菜品,则修改
                    mDatabase = mDBHelper.getWritableDatabase();
                    ContentValues cv = new ContentValues();
                    cv.put("ForIndex", meal.getForIndex());
//                    cv.put("ImgUrl", meal.getImgUrl());
                    cv.put("JLPrice", meal.getJLPrice());
                    cv.put("JLUnit", meal.getJLUnit());
                    cv.put("MealID", meal.getMealID());
                    cv.put("MealName", meal.getMealName());
                    cv.put("MState", meal.getMState());
                    cv.put("SellPrice", meal.getSellPrice());
                    cv.put("TagID", meal.getTagID());
                    //参数依次是表名,修改后的值,where条件,以及约束,如果不指定三四两个参数,会更改所有行
                    int rowId = mDatabase.update("meals", cv, "MealID = ?", new String[]{meal.getMealID()});
                    Logger.d("update meal rowId:"+rowId);
                    if (rowId < 0) {
                        res.setData("更新失败," + rowId);
                        closeCursor(cursor);
                        //return res;
                    } else {
                        res.setSucceed(true);
                        res.setData("更新数据成功");
                        closeCursor(cursor);
                        //return res;
                    }

                } else {
                    mDatabase = mDBHelper.getWritableDatabase();
                    ContentValues cv = new ContentValues();
                    cv.put("ForIndex", meal.getForIndex());
//                    cv.put("ImgUrl", meal.getImgUrl());
                    cv.put("JLPrice", meal.getJLPrice());
                    cv.put("JLUnit", meal.getJLUnit());
                    cv.put("MealID", meal.getMealID());
                    cv.put("MealName", meal.getMealName());
                    cv.put("MState", meal.getMState());
                    cv.put("SellPrice", meal.getSellPrice());
                    cv.put("TagID", meal.getTagID());
                    long rowId = mDatabase.insert("meals", null, cv);
                    Logger.d("insert meal rowId:"+rowId);
                    if (rowId < 0) {
                        res.setData("插入失败," + rowId);
                        //closeCursor(cursor);
                        //return res;
                    } else {
                        res.setSucceed(true);
                        res.setData("插入数据成功");
                        //closeCursor(cursor);
                        //return res;
                    }


                }



            //return  res ;

        } catch (Exception ex) {
            res.setData("出错了," + ex.getMessage());
            //closeCursor(cursor);
        }
        finally {
            closeCursor(cursor);
        }
        return res;
    }

    /**
     * 查询出识别的菜品详细信息
     * @param mlst
     * @return
     */
    public List<dishmeal> getmeal(List<String> mlst) {
        Cursor cursor = null;
        List<dishmeal> meallist = new ArrayList<>();
        try {

            if(mDBHelper==null){
                return  null;
            }
            SQLiteDatabase db=mDBHelper.getReadableDatabase();

            String where =null;//"MealID in (?,?,?)  ";
            String[] whereValue =null;//{"11","10","12"};
            if(mlst!=null && mlst.size()>0) {
                where ="";
                whereValue = mlst.toArray(new String[0]);//. " MealID"
                for(int i=0;i<mlst.size();i++)
                {
                    where+=where==""?"":",";
                    where+="?";
                }
                where=" MealID in ("+where+") ";
            }
//            Logger.d("getmeal where:" +where);
//            Logger.d("getmeal whereValue :" + JSON.toJSONString(whereValue));

            cursor = db.query("meals", null, where, whereValue, null, null, null);
//            cursor =  db.rawQuery("SELECT * FROM meals ", new String[]{});
//            Logger.d("cursor getCount:" +cursor.getCount());
            while (cursor != null && cursor.getCount() > 0 && cursor.moveToNext()) {
                //int dbId = cursor.getInt(cursor.getColumnIndex("_id"));
                double ForIndex = cursor.getDouble(cursor.getColumnIndex("ForIndex"));
                String ImgUrl = cursor.getString(cursor.getColumnIndex("ImgUrl"));
                double JLPrice = cursor.getDouble(cursor.getColumnIndex("JLPrice"));
                double JLUnit = cursor.getDouble(cursor.getColumnIndex("JLUnit"));

                String MealID = cursor.getString(cursor.getColumnIndex("MealID"));
                String MealName = cursor.getString(cursor.getColumnIndex("MealName"));
                String MState = cursor.getString(cursor.getColumnIndex("MState"));
                double SellPrice = cursor.getDouble(cursor.getColumnIndex("SellPrice"));
                String TagID = cursor.getString(cursor.getColumnIndex("TagID"));


                dishmeal meal=new dishmeal();
                meal.setForIndex(ForIndex);
                meal.setImgUrl(ImgUrl);
                meal.setJLPrice(JLPrice);
                meal.setJLUnit(JLUnit);
                meal.setMealID(MealID);
                meal.setMealName(MealName);
                meal.setMState(MState);
                meal.setSellPrice(SellPrice);
                meal.setTagID(TagID);
                meallist.add(meal);

            }


        } catch (Exception ex) {
            Logger.d("getmeal Error:" +ex.getMessage());

        } finally {
            closeCursor(cursor);
        }
        return meallist;
    }

    public ResponseBean updatemealimg(String mealid,String imgpath) {

        Cursor cursor = null;
        ResponseBean res = new ResponseBean();
        res.setSucceed(false);
        try {

            if (mDBHelper == null) {
                res.setData("未初始化 mDBHelper");
                return res;
            }
            //存在该菜品,则修改
            mDatabase = mDBHelper.getWritableDatabase();
            ContentValues cv = new ContentValues();

            cv.put("ImgUrl", imgpath);
            cv.put("MealID", mealid);

            //参数依次是表名,修改后的值,where条件,以及约束,如果不指定三四两个参数,会更改所有行
            int rowId = mDatabase.update("meals", cv, "MealID = ?", new String[]{mealid});
            Logger.d("update meal rowId:" + rowId);
            if (rowId < 0) {
                res.setData("更新失败," + rowId);
                closeCursor(cursor);
                //return res;
            } else {
                res.setSucceed(true);
                res.setData("更新数据成功");
                closeCursor(cursor);
                //return res;
            }

        } catch (Exception ex) {
            res.setData("出错了," + ex.getMessage());
            //closeCursor(cursor);
        } finally {
            closeCursor(cursor);
        }
        return res;
    }



}

三、简单调用

复制代码
  DBManager.getInstance().init(context);
                List<String> qmlst=new ArrayList<>();
                qmlst.add("2146");
  List<dishmeal> mlst = DBManager.getInstance().getmeal(qmlst);
相关推荐
Wx-bishekaifayuan1 小时前
django电商易购系统-计算机设计毕业源码61059
java·spring boot·spring·spring cloud·django·sqlite·guava
无极程序员5 小时前
PHP常量
android·ide·android studio
CopyDragon5 小时前
设置域名跨越访问
数据库·sqlite
云空7 小时前
《Python 与 SQLite:强大的数据库组合》
数据库·python·sqlite
小黄人软件8 小时前
android浏览器源码 可输入地址或关键词搜索 android studio 2024 可开发可改地址
android·ide·android studio
极客小张10 小时前
基于STM32的智能充电桩:集成RTOS、MQTT与SQLite的先进管理系统设计思路
stm32·单片机·嵌入式硬件·mqtt·sqlite·毕业设计·智能充电桩
YUJIANYUE15 小时前
PHP将指定文件夹下多csv文件[即多表]导入到sqlite单文件
jvm·sqlite·php
帅得不敢出门15 小时前
Gradle命令编译Android Studio工程项目并签名
android·ide·android studio·gradlew
Rverdoser1 天前
Android Studio 多工程公用module引用
android·ide·android studio
Bonne journée1 天前
SQLite数据库是什么?DB Browser for SQLite是什么?
数据库·sqlite