中文字幕在线观看,亚洲а∨天堂久久精品9966,亚洲成a人片在线观看你懂的,亚洲av成人片无码网站,亚洲国产精品无码久久久五月天

android dbutils的簡(jiǎn)化版

2018-07-20    來源:open-open

容器云強(qiáng)勢(shì)上線!快速搭建集群,上萬Linux鏡像隨意使用
 
//復(fù)雜的可以使用dbutils的,這就來個(gè)仿dbutils的簡(jiǎn)化版的吧

public class DAOHelper {

public static final MapRowProcessor MAPROWPROCESSOR = new MapRowProcessor();
  
  
private String tableName;   //表名
private String[] cols;   //列名
  
  
public DAOHelper(String tableName, String[] columns) {
this.tableName = tableName;
this.cols = columns;
}
  
public List<Map<String, String>> query(String sqlWhere) {
return query(sqlWhere,null);
}
  
  
public List<Map<String, String>> query(String sqlWhere,String[] sqlWhereArgs) {
ArrayList<Map<String, String>> list = new ArrayList<Map<String, String>>(0);
  
  
Cursor cursor = null;
try {
SQLiteDatabase database = DBOpenHelper.getWritableDatabase();
cursor = database.query(tableName, cols, sqlWhere, sqlWhereArgs, null, null, null);
  
list.ensureCapacity(cursor.getCount());
  
while (cursor.moveToNext()) {
list.add(MAPROWPROCESSOR.process(cursor));
}
} catch (Exception e) {
Logger.error("DAOHelper", "插入失敗");
} finally {
if (null != cursor) {
cursor.close();
}
}
  
  
return list;
}
  
  
public int insert(List<Map<String, String>> list) {
SQLiteDatabase database = DBOpenHelper.getWritableDatabase();
  
  
try {
// 打開數(shù)據(jù)庫
database.beginTransaction();
for (Map<String, String> map : list) {
ContentValues v = mapToContentValues(map);
database.insert(tableName, null, v);
if (v != null) {
v.clear();
v = null;
}
}
// 設(shè)置事務(wù)成功.
database.setTransactionSuccessful();
  
  
return list.size();
} catch (Exception e) {
Logger.error("DAOHelper", "插入失敗");
return -1;
} finally {
database.endTransaction();
}
  
  
}
  
  
public int delete(String sqlWhere) {
SQLiteDatabase database = DBOpenHelper.getWritableDatabase();
try {
// 打開數(shù)據(jù)庫
database.beginTransaction();
// 設(shè)置事務(wù)成功.
int rowCount = database.delete(tableName, sqlWhere, null);
database.setTransactionSuccessful();
return rowCount;
} catch (Exception e) {
Logger.error("DAOHelper", "刪除失敗");
return -1;
} finally {
database.endTransaction();
}
}
  
  
private ContentValues mapToContentValues(Map<String, String> map) {
  
  
ContentValues values = new ContentValues();
for (String col : cols) {
values.put(col, map.get(col));
}
  
  
return values;
}
  
  
static public void clear(List<Map<String, String>> list) {
if (null == list) {
return;
}
for (Map<String, String> map : list) {
if (null != map) {
map.clear();
}
}
list.clear();
}
  
/**
* 查詢得到列表
* 
* @param sql
*             完整的select語句,可包含?,但不能用;結(jié)尾
* @param selectionArgs
*             查詢參數(shù)
* @param rp
*              每行的處理,可使用DAOHelper.MAPROWPROCESSOR
* @return
*/
static public <T> List<T> query(String sql, String[] selectionArgs, RowProcessor<T> rp) {
ArrayList<T> list = new ArrayList<T>(0);
  
  
Cursor c = null;
try {
  
  
SQLiteDatabase database = DBOpenHelper.getWritableDatabase();
  
  
c = database.rawQuery(sql, selectionArgs);
  
list.ensureCapacity(c.getCount());
  
  
while (c.moveToNext()) {
list.add(rp.process(c));
}
} catch (Exception e) {
e.printStackTrace();
Logger.error("DAOHelper", "查詢失敗\\n"+e);
  
  
} finally {
  
  
if (null != c) {
c.close();
}
}
  
  
return list;
}
  
static public int count(String sql, String[] selectionArgs) {
Cursor c = null;
try {
  
SQLiteDatabase database = DBOpenHelper.getWritableDatabase();
  
c = database.rawQuery(sql, selectionArgs);
  
return c.getCount();
  
} catch (Exception e) {
e.printStackTrace();
Logger.error("DAOHelper", "查詢失敗\\n"+e);
  
} finally {
  
if (null != c) {
c.close();
}
}
  
return 0;
}
  
//行處理接口
public interface RowProcessor<T> {
T process(Cursor c);
}
  
  
//將每行處理成Map<String,String>結(jié)構(gòu)
static public class MapRowProcessor implements RowProcessor<Map<String,String>> {
  
  
@Override
public Map<String,String> process(Cursor c) {
Map<String,String> map = new CaseInsensitiveMap<String>();
  
  
String[] columns = c.getColumnNames();
  
  
for (String col : columns) {
map.put(col, c.getString(c.getColumnIndex(col)));
}
  
  
return map;
}
  
  
}
  
//將每行處理成String結(jié)構(gòu)
static public class StringRowProcessor implements RowProcessor<String> {
private String[] fields;
private String joinner;
private volatile int[] fldIdx = null;
  
public StringRowProcessor(){
this.fields = null;
this.joinner = ",";
}
  
public StringRowProcessor(String[] fields,String joinner){
this.fields = fields;
if(null != joinner){
this.joinner = joinner;
}
}
  
public StringRowProcessor(int[] fieldIndex,String joinner){
fldIdx = fieldIndex;
if(null != joinner){
this.joinner = joinner;
}
}
  
@Override
public String process(Cursor c) {
if(null == fldIdx){
initFldIdx(c);
}
  
StringBuilder builder = new StringBuilder();
for(int i = 0,n = fldIdx.length; i < n; i ++){
builder.append(c.getString(fldIdx[i]));
if(i < n -1){
builder.append(joinner);
}
}
  
return builder.toString();
}
  
private void initFldIdx(Cursor c) {
if(null == fields){
for(int i = 0,n = c.getColumnCount(); i < n ; i ++ ){
fldIdx[i] = i;
}
}else{
for(int i = 0, n = fields.length; i < n; i ++){
fldIdx[i] = c.getColumnIndex(fields[i]);
}
}
}
  
}
}
 

標(biāo)簽: 數(shù)據(jù)庫

版權(quán)申明:本站文章部分自網(wǎng)絡(luò),如有侵權(quán),請(qǐng)聯(lián)系:west999com@outlook.com
特別注意:本站所有轉(zhuǎn)載文章言論不代表本站觀點(diǎn)!
本站所提供的圖片等素材,版權(quán)歸原作者所有,如需使用,請(qǐng)與原作者聯(lián)系。

上一篇:java客戶端模擬表單上傳文件

下一篇:android開發(fā),http工具類