Android中Sqlite使用
阿新 • • 發佈:2019-01-02
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();
看看執行截圖
生成的資料庫檔案