本类没啥说的,照搬EOE中的那个类好了,跟据自已项目稍做修改。
package chenzx.dataassistant.db;
import java.util.ArrayList;
import java.util.Map;
import android.net.Uri;
import android.provider.BaseColumns;
/**
* 建表基类,用于返回几个建表的方法。
* @author chenzx
* @version 1.0
* @Date 2014.1.7
*
*/
public abstract class DatabaseColumn implements BaseColumns {
/**
* 内容提供者签名
* The identifier to indicate a specific ContentProvider
*/
public static final String AUTHORITY = "chenzx.dataassistant.provider";
/**
* 数据库名
* The database's name
*/
public static final String DATABASE_NAME = "dataassistant.db";
/**数据库版本
* The version of current database
*/
public static final int DATABASE_VERSION = 1;
/**继承自本类的子类名称。
* Classes's name extends from this class.
*/
public static final String[] SUBCLASSES = new String[] {
"chenzx.dataassistant.db.NoteColumn", "chenzx.dataassistant.db.PasswdColumn",
"chenzx.dataassistant.db.TodoColumn" };
/**
* 返回生成表的SQL语句,使用该方法前需先实现getTableName()方法和getTableMap()方法。
* @return String 生成表机构的SQL语句
*/
public String getTableCreateor() {
return getTableCreator(getTableName(), getTableMap());
}
/**
* Get sub-classes of this class.
* 获取本类的子类数组。
* @return Array of sub-classes.
*/
@SuppressWarnings("unchecked")
public static final Class
[] getSubClasses() {
ArrayList
> classes = new ArrayList
>(); Class
subClass = null; for (int i = 0; i < SUBCLASSES.length; i++) { try { subClass = (Class
) Class.forName(SUBCLASSES[i]); classes.add(subClass); } catch (ClassNotFoundException e) { e.printStackTrace(); continue; } } return classes.toArray(new Class[0]); } /** * Create a sentence to create a table by using a hash-map. * 使用HASH_MAP生成建立表的SQL语句 * @param tableName 表名 * The table's name to create. * @param map 数据表列的映射MAP * A map to store table columns info. * @return String 建表SQL语句 */ private static final String getTableCreator(String tableName, Map
map) { String[] keys = map.keySet().toArray(new String[0]); String value = null; StringBuilder creator = new StringBuilder(); creator.append("CREATE TABLE ").append(tableName).append("( "); int length = keys.length; for (int i = 0; i < length; i++) { value = map.get(keys[i]); creator.append(keys[i]).append(" "); creator.append(value); if (i < length - 1) { creator.append(","); } } creator.append(")"); return creator.toString(); } /** * 抽象方法,返回表名 * @return String 返回表名 */ abstract public String getTableName(); /** * 返回表Uri * @return Uri 返回表Uri */ abstract public Uri getTableContent(); /** * 抽象方法,返回表结构映射 * @return MAP 表结构映射 */ abstract protected Map
getTableMap(); }