android创建表,android 由entity创建创建表的sql语句

import java.lang.reflect.Field;

import java.util.HashMap;

import java.util.Map;

/**

* @author

* @date

*/

public class TableBuilder {

public static final String PRIMARY_KEY = "_id";

private static final Map, String> TYPES = new HashMap, String>();

static {

TYPES.put(byte.class, "INTEGER");

TYPES.put(boolean.class, "INTEGER");

TYPES.put(short.class, "INTEGER");

TYPES.put(int.class, "INTEGER");

TYPES.put(long.class, "INTEGER");

TYPES.put(String.class, "TEXT");

TYPES.put(byte[].class, "BLOB");

TYPES.put(float.class, "REAL");

TYPES.put(double.class, "REAL");

}

public static String createSQLStatement(Entity entity) {

StringBuilder sb = new StringBuilder("CREATE TABLE IF NOT EXISTS ");

sb.append(entity.getTableName());

sb.append(" (" + PRIMARY_KEY + " INTEGER PRIMARY KEY AUTOINCREMENT");

Class cls = entity.getClass();

Field[] f = cls.getDeclaredFields();

for (Field field : f) {

String name = field.getName();

Class c = field.getType();

String type = TYPES.get(c);

if (type != null) {

sb.append(',');

sb.append(name + " " + type);

if (field.isAnnotationPresent(unique.class)) {

sb.append(" UNIQUE");

}

}

}

if (cls.isAnnotationPresent(uniqueConstraints.class)) {

uniqueConstraints constraints = (uniqueConstraints) cls

.getAnnotation(uniqueConstraints.class);

String columnName = constraints.columnNames();

sb.append(",UNIQUE(" + columnName + ")");

String clause = constraints.clause().toString();

sb.append(" ON CONFLICT " + clause);

}

sb.append(')');

return sb.toString();

}

public static String dropSQLStatement(String tableName) {   return "DROP TABLE IF EXISTS " + tableName;  } }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值