2016-04-10 08:33:11|?次阅读|上传:wustguangh【已有?条评论】发表评论
关键词:Java, Android, 数据库|来源:唯设编程网
为操作方便,我们将每个表对应的操作(包括增加、删除、修改、查询等)封装在一个适配器类中,这里仅仅哪生词表对应的适配器类来进行说明。
/** * 生词对应的数据库操作对象 * Created by ygh on 2016/1/26. */ public class DBNewWordManager extends DBManager { public DBNewWordManager(Context context) { super(context); tag = this.getClass().getName(); } @Override public void add(List<DataItem> items) { db.beginTransaction(); //开始事务 try { for (DataItem item : items) { if (!(item instanceof NewWord)) continue; NewWord newWord = (NewWord) item; //生词 db.execSQL("insert into glossary values (?,?,?,?,?,?);", new Object[]{ newWord.getId(), newWord.getMasterCode(), newWord.getReviewCount(), newWord.getQueryCount(), newWord.getReviewTime(), newWord.getAddTime() }); } db.setTransactionSuccessful(); //设置事务成功完成 } catch (SQLiteException err) { Log.w(tag, err.getMessage()); } finally { db.endTransaction(); //结束事务 } } @Override public boolean add(DataItem item) { if (!(item instanceof NewWord)) return false; NewWord newWord = (NewWord) item; if(newWord.getId() == -1) { Toast.makeText(_context,"对应生词没有初始化",Toast.LENGTH_LONG).show(); return false; } //先进行查询,检查是否已经存在于数据库中 query(newWord); if(newWord.isQuerySucceeded()){ Toast.makeText(_context,"不用重复添加",Toast.LENGTH_LONG).show(); return false; } try { //生词 db.execSQL("insert into glossary values (?,?,?,?,?,?);", new Object[]{ newWord.getId(), newWord.getMasterCode(), newWord.getReviewCount(), newWord.getQueryCount(), newWord.getReviewTime(), newWord.getAddTime() }); } catch (SQLiteException err) { Log.w(tag, err.getMessage()); return false; } return true; } @Override public boolean delete(DataItem item) { if(!(item instanceof NewWord)) return false; NewWord newWord = (NewWord) item; try { db.execSQL("delete from glossary where ID=" + newWord.getId() + ";"); return true; } catch (SQLiteException err) { Log.w(tag, err.getMessage()); return false; } } @Override public void clearTables() { try { db.execSQL("delete from glossary"); } catch (SQLiteException err) { Log.w(tag, err.getMessage()); } } @Override public Cursor queryTheCursor() { Cursor c = db.rawQuery("SELECT b.word,a.ID,a.masterCode,a.reviewCount,a.queryCount,a.reviewTime,a.addTime FROM glossary as a inner join basic_info as b on a.ID=b.ID order by a.addTime DESC;", null); return c; } @Override public List<DataItem> query() { ArrayList<DataItem> items = new ArrayList<DataItem>(); Cursor c = queryTheCursor(); while (c.moveToNext()) { //基本解释 NewWord item = new NewWord(c.getString(c.getColumnIndex("word"))); item.setMasterCode(c.getInt(c.getColumnIndex("masterCode"))); item.setReviewCount(c.getInt(c.getColumnIndex("reviewCount"))); item.setQueryCount(c.getInt(c.getColumnIndex("queryCount"))); item.setReviewTime(c.getString(c.getColumnIndex("reviewTime"))); item.setAddTime(c.getString(c.getColumnIndex("addTime"))); //设置查询状态 item.setQuerySucceeded(true); //添加到列表中 items.add(item); } c.close(); return items; } @Override public void query(DataItem dataItem) { if(!(dataItem instanceof NewWord)) return; NewWord newWord = (NewWord) dataItem; Integer wordID = newWord.getId(); String args[] = {wordID.toString()}; Cursor c = db.rawQuery("SELECT * FROM glossary where ID = ?", args); if (c.moveToNext()) { newWord.setId(c.getInt(c.getColumnIndex("ID"))); newWord.setMasterCode(c.getInt(c.getColumnIndex("masterCode"))); newWord.setReviewCount(c.getInt(c.getColumnIndex("reviewCount"))); newWord.setQueryCount(c.getInt(c.getColumnIndex("queryCount"))); newWord.setReviewTime(c.getString(c.getColumnIndex("reviewTime"))); newWord.setAddTime(c.getString(c.getColumnIndex("addTime"))); //设置查询状态 newWord.setQuerySucceeded(true); } c.close(); } }