Beispiel #1
0
 /**
  * 创建可运行SQL语句。 替换sql语句中的命名参数,如果命名参数没有找到,返回命名参数的名字. sql参数:指定为(:param)类型,以“:”开头+变量名。例:--> :param
  *
  * @param sql SQL语句(带参数)
  * @param prop 参数MAP(参数名,参数值)
  * @return String 可运行SQL语句
  */
 protected String createExecuteSQL(String sql, Map<String, Object> prop) {
   /*
    * 如果参数信息为空时,直接返回参数SQL
    */
   if (BaseUtil.isEmpty(sql) || prop == null) {
     return sql;
   }
   // 获取sql中的所有变量参数
   List<String> var = BaseUtil.matcherList(BaseDBConst.SQL_VARIABLES, sql, 1);
   if (var == null || var.size() == 0) {
     return sql;
   }
   StringBuilder s = new StringBuilder();
   // 循环所有参数
   for (Iterator<String> iterator = var.iterator(); iterator.hasNext(); ) {
     s.delete(0, s.length());
     String key = iterator.next();
     Object value = prop.get(key);
     /*
      * 如果取得的值为null时,将参数变量替换为“?” 如果取得的值是数值类型时,将参数变量替换为“值”
      * 如果取得的值是字符串类型时,将参数变量替换为“‘”+值+“’” 如果取得的值是集合类型时,将参数变量替换为集合转换in查询参数
      * 取得的值是其他类型时,将参数变量替换为“‘”+值+“’”
      */
     if (value == null) {
       // 参数不能为空
       sql = sql.replaceFirst(BaseDBConst.SQL_VARIABLES, BaseDBConst.QUESTION_MARK);
     } else if (value instanceof Number) {
       // 数值类型
       sql = sql.replaceFirst(BaseDBConst.SQL_VARIABLES, value.toString());
     } else if (value instanceof String) {
       // 字符串类型
       s.append(BaseDBConst.APOSTROPHE);
       s.append(value);
       s.append(BaseDBConst.APOSTROPHE);
       sql = sql.replaceFirst(BaseDBConst.SQL_VARIABLES, s.toString());
     } else if (value instanceof Collection) {
       // 集合 对应in查询
       sql =
           sql.replaceFirst(
               BaseDBConst.SQL_VARIABLES, collectionToInSQLVariables((Collection<?>) value));
     } else {
       // 其它情况作为普通String处理
       s.append(BaseDBConst.APOSTROPHE);
       s.append(value);
       s.append(BaseDBConst.APOSTROPHE);
       sql = sql.replaceFirst(BaseDBConst.SQL_VARIABLES, s.toString());
     }
   }
   return sql;
 }
Beispiel #2
0
  /**
   * 将游标结果集转成指定类名的列表
   *
   * @param cursor 游标
   * @param className 类名(完全路径:包名+类名)
   * @return
   */
  @SuppressWarnings("unchecked")
  protected <E> List<E> cursorToList(Cursor cursor, Class<E> cls) {
    List<E> rs = new ArrayList<E>();
    if (!BaseUtil.isEmpty(cursor)) {
      int count = cursor.getCount();
      // 游标移动到第一条记录
      cursor.moveToFirst();
      int columnCount = cursor.getColumnCount();

      for (int i = 0; i < count; i++) {
        if (cls == null) {
          BaseDaoBean bean = new BaseDaoBean();
          for (int j = 0; j < columnCount; j++) {
            bean.put(cursor.getColumnName(j), cursor.getString(j));
          }
          rs.add((E) bean);
        } else {
          try {
            E obj = cls.newInstance();
            for (int j = 0; j < columnCount; j++) {
              setAttributeValue(obj, j, cursor);
            }
            rs.add(obj);
          } catch (Exception e) {
            Log.e(TAG, "数据转换失败");
            break;
          }
        }
        cursor.moveToNext();
      }
    }
    return rs;
  }
Beispiel #3
0
 /**
  * 插入数据库的表数据
  *
  * @param tableName 表名
  * @param prop 数据MAP
  * @return long 数据记录主键
  */
 public long save(String tableName, Map<String, Object> prop) {
   // 更新数据 并获取新数据的id
   ContentValues cv = new ContentValues();
   for (Iterator<String> iterator = prop.keySet().iterator(); iterator.hasNext(); ) {
     String key = iterator.next();
     cv.put(key, BaseUtil.nullToSpace(prop.get(key)));
   }
   return save(tableName, cv);
 }