所有表类的父类
public class Table {
public static final String prefix = "COLUMN_";
public static final String _ID = "_id";
public String TABLE_NAME;
public String getTABLE_NAME() {
return TABLE_NAME;
}
public void setTABLE_NAME(String tABLE_NAME) {
TABLE_NAME = tABLE_NAME;
}
/**
* 通过反射来创建创建表格的SQL语句
*
* @param tabled
* 要生成SQL语句的表格对象,列的属性都是TEXT类型
* @return SQLite中创建该表格的SQL语句
*/
public String createTableSQL() {
final String TEXT_TYPE = " TEXT";
final String COMMA_SEP = ",";
StringBuilder sql = new StringBuilder();
sql.append("CREATE TABLE ").append(this.getTABLE_NAME()).append(" (")
.append(_ID)
.append(" INTEGER PRIMARY KEY,");
Field[] fields = getClass().getDeclaredFields();
for (int i = 0; i < fields.length; i++) {
if (fields[i].getName().startsWith(prefix)) {
try {
sql.append((String) fields[i].get(this)).append(TEXT_TYPE)
.append(COMMA_SEP);
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
}
}
}
// sql这时的形式为“...,column_name value,)” 删除最后多出的“,”
sql.deleteCharAt(sql.length() - 1);
return sql.append(")").toString();
}
}
表格类
public abstract class DataBaseMetaData {
public static final String DB_NAME = "bean_counpon.db";
private DataBaseMetaData() {
};
public static class TableUser extends Table {
public static final String TABLE_NAME = "user";
public String getTABLE_NAME() {
return TABLE_NAME;
}
public static final String COLUMN_NAME = "name";
public static final String COLUMN_PASS_WORD = "pass_word";
public static final String COLUMN_GENDER = "gender";
public static final String COLUMN_TEL = "tel";
public static final String COLUMN_QQ = "qq";
public static final String COLUMN_EMAIL = "email";
public static final String COLUMN_START_TIME = "start_time";
}
}
结果:
以后想生成那个表格的SQL语句,直接调用database.execSQL(new TableUser().createTableSQL());