標籤:oncreate mysql override 條件 family user database 預設值 ali
1、SqliteOpenHelper為資料庫抽象類別,需建立一個類繼承他,其中有onCreate建立資料庫的抽象方法和onUpgrade升級資料庫方法(一般用不上)。
1 //建立資料庫的類 2 //SQLiteOpenHelper抽象類別 onCreate和onUpgrade抽象方法 3 public class MySqliteHelper extends SQLiteOpenHelper { 4 5 //建立資料庫以及表 6 private String SqlCpData="create table TableCpData(id integer primary key autoincrement," 7 + "cp_num varchar(20),time varchar(20));"; 8 9 10 public MySqliteHelper (Context context) {11 this(context, "tableCpData.db", null, 1);12 }13 14 public MySqliteHelper(Context context, String name, CursorFactory factory, int version) {15 super(context, name, factory, version);16 // TODO Auto-generated constructor stub17 }18 19 //建立資料庫抽象方法20 @Override21 public void onCreate(SQLiteDatabase db) {22 // TODO Auto-generated method stub23 db.execSQL(SqlCpData); //執行建立資料庫操作24 Log.i(SqlCpData, "資料庫建立成功");25 }26 27 //升級資料庫28 @Override29 public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {30 // TODO Auto-generated method stub31 32 }33 34 35 }
2、然後建立一個方法類,用來定義擷取操作以及時間的方法
//定義擷取操作以及時間的方法public class Rule { public int id; public String cp_num; public String time; //擷取ID public int getid() { return id; } //設定ID public void setId(int id) { this.id=id; } public String getCpNum() { return cp_num; } public void setCpNum(String cp_num){ this.cp_num=cp_num; } public String getTime() { return time; } public void setTime(String time) { this.time=time; } //該類的方法 public Rule(int id, String cp_num, String time) { super(); this.id = id; this.cp_num = cp_num; this.time = time; } public Rule() { super(); } }
3、然後建立資料庫的一個增刪查改類
//資料庫的增刪查改操作public class CpDataDao { private MySqliteHelper mySqliteHelper; //定義資料庫操作函數 public CpDataDao(Context context) { mySqliteHelper=new MySqliteHelper(context); //執行個體化資料庫操作函數 } //插入資料庫 public long insert(String cp_num,String time) { //執行個體化SQLiteDatabase對象 SQLiteDatabase database=mySqliteHelper.getWritableDatabase(); ContentValues contentValues=new ContentValues(); contentValues.put("cp_num", cp_num); contentValues.put("time", time); return database.insert("TableCpData", null, contentValues); //表明 、空列的預設值、插入封裝的列名稱和列值 } private Rule rule=null; //儲存資料的集合 private List<Rule> dataList = null; /** * 查詢所有資料 * * @return 資料集合 */ public List<Rule> queryAll() { SQLiteDatabase db = mySqliteHelper.getReadableDatabase(); Cursor cursor = db.query("TableCpData", new String[] { "id", "cp_num", "time" }, null, null, null, null, null); if (cursor != null && cursor.getCount() > 0) { dataList = new ArrayList<Rule>(); while (cursor.moveToNext()) { rule = new Rule(); rule.setId(cursor.getInt(0)); rule.setCpNum(cursor.getString(1)); rule.setTime(cursor.getString(2)); dataList.add(rule); } } return dataList; } /** * 刪除所有資料 * @return 0 刪除成功,1刪除失敗 */ public int deleteAll() { try { SQLiteDatabase db = mySqliteHelper.getWritableDatabase(); // return db.delete("student", null, null); String sql = "delete from TableCpData"; db.execSQL(sql); return 0; } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } return 1; } }
還有一些按條件進行查詢的操作,注意修改資料庫名和表明要和上面的一致
/** * 查詢時間 * * @return 資料集合 */ //查詢資料的集合// List<Rule> timeList=null; public List<Rule> queryTimerecord(final String time) { SQLiteDatabase db = dsOpenHelper.getReadableDatabase(); String sqluser = "select * from ruledata where time like ? "; String [] Sqlselect = new String[] { "%" + time + "%", }; Cursor cursor =db.rawQuery(sqluser, Sqlselect); if (cursor != null && cursor.getCount() > 0) { // UserPassward = new ArrayList<User>(); while (cursor.moveToNext()) { Rule rule = new Rule(); rule.setId(cursor.getInt(0)); rule.setOperation(cursor.getString(1)); rule.setTime(cursor.getString(2)); //UserPassward.add(user); dataList.add(rule); } } return dataList; }
4、最後在自己的類中對這些方法進行叫用作業,就可以實現Sqlite的增刪查改操作了
比方說對下位機收到的資料進行插入資料
(1)先在類全域變數中聲明類
private CpDataDao cpDataDao=new CpDataDao(this); //資料庫增刪查改類
(2)然後調用該類的方法進行插入資料
cpDataDao.insert(device.getName(), time()); //插入一個裝置的名稱和當前系統時間
(3) (2)中time擷取當前系統時間方法
//擷取系統時間函數 private String time() { SimpleDateFormat formatter = new SimpleDateFormat ("yyyy-MM-dd HH:mm:ss"); Date curDate = new Date(System.currentTimeMillis());//擷取目前時間 String str_time = formatter.format(curDate); return str_time; }
5、查詢資料的操作也是類似,通過類來調用方法,這裡是將查詢到的資料顯示在一個textView介面中
(1) 聲明
private CpDataDao cpDataDao=new CpDataDao(this);
private CpDataDao deleDataDao=new CpDataDao(this);
private LinearLayout llcontent;
private TextView tv;
(2)查詢所有的方法
//查詢所有充電記錄 private void queryAll() { //mListView.removeAllViews(); llcontent.removeAllViews(); List<Rule> dataList=cpDataDao.queryAll(); if (dataList!=null) { for(Rule rule:dataList) { tv=new TextView(this); //mListView=new ListView(mContext); // list.add(new deviceListItem("充電樁:"+rule.getCpNum()+"時間:"+rule.getTime(), true)); tv.setText("\t"+rule.getid()+"."+"充電樁:"+rule.getCpNum()+" "+"Time:"+rule.getTime()+"\n"); tv.setTextColor(Color.BLUE); tv.setTextSize(16); llcontent.addView(tv); Log.i("資料庫資料",""+rule.getCpNum()+rule.getTime()); } Log.i("資料庫查詢","查詢資料庫成功"); } }
(3)刪除所有
btnDelected.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub llcontent.removeAllViews(); //deleDataDao.deleteAll(); int line=deleDataDao.deleteAll(); if (line==0) { Log.i("所有資料刪除成功", ""+line); Toast.makeText(mContext, "所有資料成功刪除", Toast.LENGTH_SHORT).show(); } else { Toast.makeText(mContext, "當前沒有資料", Toast.LENGTH_SHORT).show(); } } });
Sqlite資料庫增刪查改操作