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

本文介绍了一种在不删除原有表的情况下,通过遍历检测并添加数据库字段的方法,适用于Android开发场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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某个表.

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

(备份以后用)


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值