您的位置:首页 > 其它

KJFrame使用注意项

2016-02-25 08:52 302 查看
1、在使用KJFrame中的KJHttp时,调用post时默认方法是带缓存的,当不需要使用缓存时调用
public Request<byte[]> post(String url, HttpParams params,boolean useCache, HttpCallBack callback)
2、KJDB不能再APPlication中使用
3、KJDB中在find和save之前都会判断table存不存在,如果不存在,则创建table。但是当原来有一个原始的数据库A,并重新创建一个数据库B,库A中有表C,这时当要在B中同样创建C时,判断则会显示表已存在。原因如下KJDB会在内存中存一个TableInfo的对象,其中有一个变量checkDatabese// 在对实体进行数据库操作的时候查询是否已经有表了,只需查询一遍,用此标示。判断表是否在库中存在之前会先判断对象中checkDatabese是否为true,若为true则表示为已存在。
KJDB相关原码如下:
  private boolean tableIsExist(TableInfo table) {if (table.isCheckDatabese()) {Log.i("MainActivity"," ------------------------------到这儿了吗1------------------------------- ");return true;}Cursor cursor = null;try {String sql = "SELECT COUNT(*) AS c FROM sqlite_master WHERE type ='table' AND name ='"+ table.getTableName() + "' ";debugSql(sql);Log.i("MainActivity", sql + "    " + db.getPath());cursor = db.rawQuery(sql, null);if (cursor != null && cursor.moveToNext()) {int count = cursor.getInt(0);Log.i("MainActivity", " ------------------------------到这儿了吗2------------------------------- " + count);if (count > 0) {Log.i("MainActivity", " ------------------------------到这儿了吗3------------------------------- ");table.setCheckDatabese(true);return true;}}} catch (Exception e) {e.printStackTrace();} finally {if (cursor != null)cursor.close();cursor = null;}return false;}
 private void checkTableExist(Class<?> clazz) {Log.i("MainActivity", "---------------- checkTableExist -----------------");Log.i("MainActivity", TableInfo.get(clazz).getClassName());if (!tableIsExist(TableInfo.get(clazz))) {String sql = SqlBuilder.getCreatTableSQL(clazz);Log.i("MainActivity", sql);debugSql(sql);db.execSQL(sql);} else {Log.i("MainActivity", "---------------- checkTableExist ----------------- false");}}
  /*** 根据主键查找数据(默认不查询多对一或者一对多的关联数据)** @param id* @param clazz*/public <T> T findById(Object id, Class<T> clazz) {Log.i("MainActivity", "-------------------到这儿了吗-----------------" + db.getPath());checkTableExist(clazz);SqlInfo sqlInfo = SqlBuilder.getSelectSqlAsSqlInfo(clazz, id);if (sqlInfo != null) {debugSql(sqlInfo.getSql());Cursor cursor = db.rawQuery(sqlInfo.getSql(),sqlInfo.getBindArgsAsStringArray());try {if (cursor.moveToNext()) {return CursorHelper.getEntity(cursor, clazz, this);}} catch (Exception e) {e.printStackTrace();} finally {cursor.close();}}return null;}
解决方案:
在重新创建数据库B之前,或者对库B中的表进行操作前将TableInfo中的checkDatabese置为false,代码如下:
TableInfo.get(C.class).setCheckDatabese(false);

                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: