package com.appassit.db; import java.util.ArrayList; import android.database.sqlite.SQLiteDatabase; import android.provider.BaseColumns; /** */ public class SQLiteTable { String mTableName; ArrayList<Column> mColumnsDefinitions = new ArrayList<Column>(); public String getTableName() { return mTableName; } /** * 会自动添加主键 BaseColumns._ID * * @param tableName */ public SQLiteTable(String tableName) { mTableName = tableName; mColumnsDefinitions.add(new Column(BaseColumns._ID, Column.Constraint.PRIMARY_KEY, 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; } 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()); } public void delete(final SQLiteDatabase db) { db.execSQL("DROP TABLE IF EXISTS " + mTableName); } }