文章目录
  1. 1. 工具类
  2. 2. 数据库操作类

工具类

  • Column
    用于管理字段

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    public class Column {
    // 约束
    public static enum Constraint {
    UNIQUE("UNIQUE"), NOT("NOT"), NULL("NULL"), CHECK("CHECK"), FOREIGN_KEY(
    "FOREIGN KEY"), PRIMARY_KYE("PRIMARY KEY");
    private String value;

    private Constraint(String value) {
    this.value = value;
    }

    @Override
    public String toString() {
    return value;
    }
    }

    // 数据类型
    public static enum DataType {
    NULL, INTEGER, REAL, TEXT, BLOB
    }

    private String mColumnName;
    private Constraint mConstraint;
    private DataType mDataType;

    public Column(String columnName, Constraint constraint, DataType dataType) {
    mColumnName = columnName;
    mConstraint = constraint;
    mDataType = dataType;
    }

    public String getColumnName() {
    return mColumnName;
    }

    public Constraint getConstraint() {
    return mConstraint;
    }

    public DataType getDataType() {
    return mDataType;
    }
    }
  • SQLiteTable
    用于表管理

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    public class SQLiteTable {
    String mTableName;
    ArrayList<Column> mColumnsDefinitions = new ArrayList<Column>();

    public String getTableName() {
    return mTableName;
    }

    // 自动添加主键_ID
    public SQLiteTable(String tableName) {
    mTableName = tableName;
    mColumnsDefinitions.add(new Column(BaseColumns._ID,
    Column.Constraint.PRIMARY_KYE, Column.DataType.INTEGER));
    }

    public SQLiteTable addColumn(Column columnsDefinition) {
    mColumnsDefinitions.add(columnsDefinition);
    return this;
    }

    public SQLiteTable addColumn(String columnName, Column.DataType dataType) {
    mColumnsDefinitions.add(new Column(columnName, null, dataType));
    return this;
    }

    public SQLiteTable addColumn(String columnName,
    Column.Constraint constraint, Column.DataType dataType) {
    mColumnsDefinitions.add(new Column(columnName, constraint, dataType));
    return this;
    }

    // 在SQLite中创建本表
    public void create(SQLiteDatabase db) {
    String formatter = " %s";
    StringBuilder stringBuilder = new StringBuilder();
    stringBuilder.append("CREATE TABLE IF NOT EXISTS ");
    stringBuilder.append(mTableName);
    stringBuilder.append("(");
    int columnCount = mColumnsDefinitions.size();
    int index = 0;
    for (Column columnsDefinition : mColumnsDefinitions) {
    stringBuilder.append(columnsDefinition.getColumnName()).append(
    String.format(formatter, columnsDefinition.getDataType()
    .name()));
    Column.Constraint constraint = columnsDefinition.getConstraint();

    if (constraint != null) {
    stringBuilder.append(String.format(formatter,
    constraint.toString()));
    }
    if (index < columnCount - 1) {
    stringBuilder.append(",");
    }
    index++;
    }
    stringBuilder.append(");");
    db.execSQL(stringBuilder.toString());
    }

    // 在SQLite中删除本表
    public void delete(final SQLiteDatabase db) {
    db.execSQL("DROP TABLE IF EXISTS " + mTableName);
    }
    }

数据库操作类

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
public abstract class BaseDataHelper {
private Context mContext;

public BaseDataHelper(Context context) {
mContext = context;
}

public Context getContext() {
return mContext;
}

protected abstract Uri getContentUri();

public void notifyChange() {
mContext.getContentResolver().notifyChange(getContentUri(), null);
}

protected final Cursor query(Uri uri, String[] projection,
String selection, String[] selectionArgs, String sortOrder) {
return mContext.getContentResolver().query(uri, projection, selection,
selectionArgs, sortOrder);
}

protected final Cursor query(String[] projection, String selection,
String[] selectionArgs, String sortOrder) {
return mContext.getContentResolver().query(getContentUri(), projection,
selection, selectionArgs, sortOrder);
}

protected final Uri insert(ContentValues values) {
return mContext.getContentResolver().insert(getContentUri(), values);
}

protected final int bulkInsert(ContentValues[] values) {
return mContext.getContentResolver()
.bulkInsert(getContentUri(), values);
}

protected final int update(ContentValues values, String where,
String[] whereArgs) {
return mContext.getContentResolver().update(getContentUri(), values,
where, whereArgs);
}

protected final int delete(Uri uri, String selection, String[] selectionArgs) {
return mContext.getContentResolver().delete(getContentUri(), selection,
selectionArgs);
}

protected final Cursor getList(String[] projection, String selection,
String[] selectionArgs, String sortOrder) {
return mContext.getContentResolver().query(getContentUri(), projection,
selection, selectionArgs, sortOrder);
}

public CursorLoader getCursorLoader(Context context) {
return getCursorLoader(context, null, null, null, null);
}

protected final CursorLoader getCursorLoader(Context context,
String[] projection, String selection, String[] selectionArgs,
String sortOrder) {
return new CursorLoader(context, getContentUri(), projection,
selection, selectionArgs, sortOrder);
}
}
文章目录
  1. 1. 工具类
  2. 2. 数据库操作类