Android examples for Database:Table Create
build Database Table Field Create Statement
import android.database.sqlite.SQLiteDatabase; import android.text.TextUtils; import java.lang.reflect.Field; import java.lang.reflect.Type; import java.util.ArrayList; import java.util.Arrays; import java.util.Date; import java.util.List; import java.util.ListIterator; public class Main{ private static final String STATEMENT_PRIMARY_KEY_AUTOINCREMENT = " PRIMARY KEY AUTOINCREMENT "; private static final String STATEMENT_PRIMARY_KEY = " PRIMARY KEY AUTOINCREMENT "; private static final String STATEMENT_FOREIGN_KEY = " REFERENCES %s ( %s ) "; private static final String ON_CASCADE_DELETE = " ON DELETE CASCADE "; private static final String STATEMENT_NOT_NULL = " NOT NULL "; private static final String STATEMENT_UNIQUE = " UNIQUE "; private static String buildFieldCreateStatement(Field field) { DatabaseField databaseField = field .getAnnotation(DatabaseField.class); if (databaseField != null) { // Add the field and the type StringBuilder statement = new StringBuilder(String.format( " %s %s ", databaseField.name(), getDatabaseFieldType(field))); // Add the primary key constraint. if (databaseField.primaryKey() && getDatabaseFieldType(field) == DatabaseFieldType.INTEGER) { statement/* www. ja va 2 s . com*/ .append(databaseField.autoincrement() ? STATEMENT_PRIMARY_KEY_AUTOINCREMENT : STATEMENT_PRIMARY_KEY); } else if (databaseField.foreignKey()) { // Add a foreign key constraint. DatabaseFieldReference reference = field .getAnnotation(DatabaseFieldReference.class); // Gets the reference table and the field. DatabaseTable referenceTable = reference.table() .getAnnotation(DatabaseTable.class); DatabaseField referenceField = reference.field(); // Add a foreign key constraint and the reference of the table and the field. statement.append(String.format(STATEMENT_FOREIGN_KEY, referenceTable.name(), referenceField.name())); if (databaseField.onCascadeDelete()) { statement.append(ON_CASCADE_DELETE); } } // Add a not null constraint. if (databaseField.notNull()) { statement.append(STATEMENT_NOT_NULL); } // Add a unique constraint. if (databaseField.unique()) { statement.append(STATEMENT_UNIQUE); } return statement.toString(); } return null; } private static String getDatabaseFieldType(Field field) { // Get the field type Type type = field.getType(); // Assign the value depending on the field type if (type == int.class) { return DatabaseFieldType.INTEGER; } if (type == short.class) { return DatabaseFieldType.INTEGER; } if (type == long.class) { return DatabaseFieldType.INTEGER; } if (type == float.class) { return DatabaseFieldType.NUMERIC; } if (type == double.class) { return DatabaseFieldType.NUMERIC; } if (type == String.class) { return DatabaseFieldType.TEXT; } if (type == byte.class) { return DatabaseFieldType.BLOB; } if (type == boolean.class) { return DatabaseFieldType.INTEGER; } if (type == Date.class) { return DatabaseFieldType.TEXT; } if (type instanceof Class && ((Class<?>) type).isEnum()) { return DatabaseFieldType.INTEGER; } return DatabaseFieldType.TEXT; } }