您的位置:首页 > 数据库

更新数据库碰到的字段添加问题

2012-01-12 14:59 435 查看
import java.util.ArrayList;
import java.util.HashMap;

public class StringCompare
{
public static void main(String args[])

{
String[] orginColumnName = new String[] { "author_id", "name",
"sort_key" };
HashMap<String, String> sqlSentenceHashMap = new HashMap<String, String>();
sqlSentenceHashMap.put("author_id", "author_id INTEGER PRIMARY KEY");
sqlSentenceHashMap.put("name", "name TEXT NOT NULL");
sqlSentenceHashMap.put("sort_key", "sort_key TEXT NOT NULL");
alterTable("Author", orginColumnName, sqlSentenceHashMap);

}

private static void alterTable(String tableName, String[] orginColumnName,
HashMap<String, String> sqlSentenceHashMap)
{

String[] dataColumnName = new String[] { "" };

ArrayList<String> differColumnName = getDiffColumnName(orginColumnName,
dataColumnName);
int arrayList_Length = differColumnName.size();
if (arrayList_Length > 0)
{
String alterString = "";
for (int i = 0; i < arrayList_Length; i++)
{

if ((i + 1) != arrayList_Length)
alterString += (" "
+ sqlSentenceHashMap.get(differColumnName.get(i)) + ",");
else
alterString += (" " + sqlSentenceHashMap
.get(differColumnName.get(i)));
}

System.out.println("ALTER TABLE Authors ADD COLUMN " + alterString);
}
}

private static ArrayList<String> getDiffColumnName(String[] orginName,
String[] dataName)
{

ArrayList<String> diffNameArrayList = new ArrayList<String>();
for (int i = 0; i < orginName.length; i++)
{
boolean flag = false;
for (int j = 0; j < dataName.length && !flag; j++)
{
if (orginName[i].equals(dataName[j]))
{
flag = true;
}
else
{
flag = false;

}
}
if (!flag)
{
diffNameArrayList.add(orginName[i]);
}
}
return diffNameArrayList;
}
}


在Android中,数据库可能要添加某个字段,但是又不想Drop某个表.

于是就出现遍历检测,添加字段的一个功能函数出来........................

(备份以后用)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息