1. 程式人生 > >Android中Sqlite使用

Android中Sqlite使用

SQLite使用

最近在做一個汽車專案,就拿這個專案當例子

建立CarDBHelper類用於建立資料庫

public class CarDBHelper extends SQLiteOpenHelper {
    //類沒有例項化,是不能用作父類構造器的引數,必須宣告為靜態
//資料庫名稱 為了使用第三方軟體開啟資料庫,最後加上字尾名
    private static final String DATABASENAME = "mydb.db"; //資料庫名稱
    private static final String TABLE_NAME = "cars";

    private
static final int DATABASEVERSION = 1; //資料庫版本 public CarDBHelper(Context context) { //第三個引數CursorFactory指定在執行查詢時獲得一個遊標例項的工廠類,設定為null,代表使用系統預設的工廠類 super(context, DATABASENAME, null, DATABASEVERSION); } @Override public void onCreate(SQLiteDatabase db) { String sql = "create table if not exists "
+ TABLE_NAME + "(id integer primary key,carid integer,name varchar(50),initial varchar(50),parentid integer,logo varchar(300),depth integer);"; db.execSQL(sql); Log.e("db", "ok"); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { String sql = "DROP TABLE IF EXISTS "
+ TABLE_NAME; db.execSQL(sql); onCreate(db); } //訪問器 public static String getDataBasename() { return DATABASENAME; } public static int getDataBaseversion() { return DATABASEVERSION; } public static String getTablename() { return TABLE_NAME; } }

建立Car實體類

public class Car implements Serializable {
    private int id;
    private String name;//名稱
    private String initial;//首字母
    private int parentid;//父級ID
    private String logo;
    private int depth;//深度 1品牌 2子公司 3車型 4具體車型

    public Car() {
    }

    public Car(int id, String name, String initial, int parentid, String logo, int depth) {
        this.id = id;
        this.name = name;
        this.initial = initial;
        this.parentid = parentid;
        this.logo = logo;
        this.depth = depth;
    }

    public int getDepth() {
        return depth;
    }

    public void setDepth(int depth) {
        this.depth = depth;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getInitial() {
        return initial;
    }

    public void setInitial(String initial) {
        this.initial = initial;
    }

    public int getParentid() {
        return parentid;
    }

    public void setParentid(int parentid) {
        this.parentid = parentid;
    }

    public String getLogo() {
        return logo;
    }

    public void setLogo(String logo) {
        this.logo = logo;
    }

    @Override
    public String toString() {
        return "Car{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", initial='" + initial + '\'' +
                ", parentid=" + parentid +
                ", logo='" + logo + '\'' +
                ", depth=" + depth +
                '}';
    }
}

建立CarTableOperate用於對錶的操作

public class CarTableOperate {
    //宣告資料庫輔助類物件
    public CarDBHelper mHelper;
    //宣告一個數據庫操作類
    private SQLiteDatabase db = null;
    //宣告一個遊標介面物件,用來遍歷查詢結果
    public Cursor mCursor = null;

    public CarTableOperate(Context context) {
        mHelper = new CarDBHelper(context);
    }

    //向car表中新增資料
    public void insertData(Car car) {
        //使用sqlitedatabase自帶的插入方法
        db = mHelper.getWritableDatabase();
        ContentValues cv = new ContentValues();
        cv.put("CarId", car.getCar_id());
        cv.put("CarName", car.getCar_name());
        cv.put("ParentId", car.getParentid());
        cv.put("CarLogo", car.getCar_logo());
        cv.put("Depth", car.getCar_depth());
        db.insert(CarDBHelper.getTablename(), null, cv);
        //關閉連線,釋放資源
        db.close();
    }

    //刪除car表中的所有資料
    public void deleteAllMusic() {
        db = mHelper.getWritableDatabase();
        db.delete(CarDBHelper.getTablename(), null, null);
        db.close();
    }

    //查詢 car表中的所有資料
    public List<Car> selectAllCar() {
        List<Car> mList = new ArrayList<>();
        Car car = null;
        db = mHelper.getWritableDatabase();
        mCursor = db.rawQuery("select * from cars order by id desc", null);
        while (mCursor.moveToNext()) {
            int id = mCursor.getInt(0);
            int car_id = mCursor.getInt(1);
            String car_name = mCursor.getString(2);
            String car_initial = mCursor.getString(3);
            int parentId = mCursor.getInt(4);
            String car_logo = mCursor.getString(5);
            int depth = mCursor.getInt(6);
            car = new Car(car_id, car_name, car_initial, parentId, car_logo, depth);
            mList.add(car);
        }
        mCursor.close();
        db.close();
        return mList;
    }
}

接下來就是在activity中使用了資料主要是在極速資料上面的介面

List<Car> mCars=new ArrayList<>();
CarTableOperate mCarTableOperate = new CarTableOperate(context);
mCars = mCarTableOperate.selectAllCar();

看看執行截圖
執行結果

生成的資料庫檔案