⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dealconf.java

📁 这是一个用jsp+Oracle开发的联系人客户关系管理系统!
💻 JAVA
字号:
package com.util;

import com.db.*;
import java.util.*;

/**
 *@Author:  1234
 *Function:1.从sql类型到数据库类型的映射
 *         2.从数据库类型到sql类型的映射
 *         3.导出数据时添加数据库类型到sql类型的映射
 *By Date: 2003-11-11
*/

public class DealConf
{
	/**
	 *从sql类型到数据库类型的映射结果集
	*/
	Vector v_sqltodb[] = new Vector[2];

	/**
	 *从数据库类型到sql类型的映射
	*/
	Vector v_dbtosql[] = new Vector[2];

	String conffile = "";
	String dbType = "";

	/**
	 *初始化两个映射结果集
	 *conffile为配置文件名,dbType为数据库常量名,参见ParentBean.class
	 *@link {ParentBean.class}
	*/
	public void initMapList(String conffile,String dbType)
	{
		v_sqltodb[0] = new Vector();
		v_sqltodb[1] = new Vector();
		v_dbtosql[0] = new Vector();
		v_dbtosql[1] = new Vector();
		String sign = "sql-to-" + dbType + "";
		v_sqltodb = initVector(conffile,sign);
		sign = "" + dbType + "-to-sql";
		v_dbtosql = initVector(conffile,sign);
		this.conffile = conffile;
		this.dbType = dbType;
	}

	/**
	 *查询某个子段之间的内容
	*/
	protected Vector []initVector(String conffile,String sign)
	{
		DealFile df = new DealFile();
		df.connFIS(conffile);
		Vector vect[] = new Vector[2];
		vect[0] = new Vector();
		vect[1] = new Vector();

		String sign_begin = "<" + sign + ">";//开始标记
		String sign_end = "</" + sign + ">";//结束标记
		long pos = df.seekStrPos(0,sign_begin);//开始位置
		long end = df.seekStrPos(0,sign_end);//结束位置

		//循环搜索<type></type><map-type></map-type>,不包括<!--//-->之间的内容
		long temp = pos;
		long temp1 = pos;
		long temp2 = pos;
		String map[] = new String[2];
		map[0] = "";
		map[1] = "";
		Vector t1 = new Vector();
		Vector t2 = new Vector();
		while(pos<end)
		{
			//取出映射字段名
			pos = df.seekStrPos(pos,"<type>");
			temp = df.seekStrPos(pos,"</type>");
			temp1 = df.seekStrPos(pos,"<!--");
			if(temp1!=-1&&temp>temp1)//有注释部分,应该跳过
			{
				pos += 6;
				map[0] = df.substring(pos,(int)(temp1 - pos));//取出跳过之前的部分
				temp2 = df.seekStrPos(temp1,"-->");
				pos = temp2 + 3;//当前指针跳到注释之后
				temp = df.seekStrPos(pos,"</type>");
			}
			else
			{
				pos += 6;
			}
			map[0] += df.substring(pos,(int)(temp - pos));

			//取出映射字段值
			pos = df.seekStrPos(pos,"<map-type>");
			temp = df.seekStrPos(pos,"</map-type>");
			temp1 = df.seekStrPos(pos,"<!--");
			if(temp1!=-1&&temp>temp1)//有注释部分,应该跳过
			{
				pos += 10;
				map[1] = df.substring(pos,(int)(temp1 - pos));//取出跳过之前的部分
				temp2 = df.seekStrPos(temp1,"-->");
				pos = temp2 + 3;//当前指针跳到注释之后
				temp = df.seekStrPos(pos,"</map-type>");
			}
			else
			{
				pos += 10;
			}
			map[1] += df.substring(pos,(int)(temp - pos));

			
			t1.add(map[0]);
			t2.add(map[1]);
			map[0] = "";
			map[1] = "";
			pos = temp + 13;
		}

		vect[0] = t1;
		vect[1] = t2;
		df.closeFIS();//关闭文件输入流
		return vect;
	}

	/**
	 *将sql字段映射为数据库字段
	*/
	public String mapsqltoDB(String type)
	{
		Vector v1 = (Vector)v_sqltodb[0];
		Vector v2 = (Vector)v_sqltodb[1];

		for(int i=0;i<v1.size();i++)
		{
			if(((String)v1.get(i)).trim().equals(type.trim()))
				return (String)v2.get(i);
		}
		return "";
	}

	/**
	 *将数据库字段映射为sql字段
	*/
	public String mapDBtosql(String type)
	{
		Vector v1 = (Vector)v_dbtosql[0];
		Vector v2 = (Vector)v_dbtosql[1];
		for(int i=0;i<v1.size();i++)
		{
			if(((String)v1.get(i)).trim().equals(type.trim()))
				return (String)v2.get(i);
		}
		return "";
	}

	/**
	 *添加或修改sql到数据库的字段映射
	*/
	public void addsqltoDB(String sqlType,String dbType)
	{
		Vector v1 = (Vector)v_sqltodb[0];
		Vector v2 = (Vector)v_sqltodb[1];
		int i = 0;
		for(;i<v1.size();i++)
		{
			if(((String)v1.get(i)).trim().equals(sqlType.trim()))
				break;
		}
		if(i==v1.size())
		{
			v1.add(i,sqlType);
			v2.add(i,dbType);
		}
		v_sqltodb[0] = v1;
		v_sqltodb[1] = v2;		
	}

	/**
	 *添加或修改数据库到sql的字段映射
	*/
	public void addDBtosql(String dbType,String sqlType)
	{
		Vector v1 = (Vector)v_dbtosql[0];
		Vector v2 = (Vector)v_dbtosql[1];
		sqlType = tosqlType(sqlType);
		int i = 0;
		for(;i<v1.size();i++)
		{
			if(((String)v1.get(i)).trim().equals(dbType.trim()))
				break;
		}
		if(i==v1.size())
		{
			v1.add(i,dbType);
			v2.add(i,sqlType);
		}
		v_dbtosql[0] = v1;
		v_dbtosql[1] = v2;		
	}

	/**
	 *将sql类型正型值转化为对应的字符串
	*/
	public String tosqlType(String no)
	{
		int num = Integer.parseInt(no);
		switch(num)
		{
			case 2003:return "ARRAY";
			case -5:return "BIGINT";
			case -2:return "BINARY";
			case -7:return "BIT";
			case 2004:return "BLOB";
			case 16:return "BOOLEAN";
			case 1:return "CHAR";
			case 2005:return "CLOB";
			case 70:return "DATALINK";
			case 91:return "DATE";
			case 3:return "DECIMAL";
			case 2001:return "DISTINCT";
			case 8:return "DOUBLE";
			case 6:return "FLOAT";
			case 4:return "INTEGER";
			case 2000:return "JAVA_OBJECT";
			case -4:return "LONGVARBINARY";
			case -1:return "LONGVARCHAR";
			case 0:return "NULL";
			case 2:return "NUMERIC";
			case 1111:return "OTHER";
			case 7:return "REAL";
			case 2006:return "REF";
			case 5:return "SMALLINT";
			case 2002:return "STRUCT";
			case 92:return "TIME";
			case 93:return "TIMESTAMP";
			case -6:return "TINYINT";
			case -3:return "VARBINARY";
			case 12:return "VARCHAR";
			default:return "";
		}
	}

	/**
	 *将sql类型映射为java类型
	*/
	public String mapsqltojava(String sqlType)
	{
		if(sqlType.equals("ARRAY"))return "";
		if(sqlType.equals("BIGINT"))return "long";
		if(sqlType.equals("BINARY"))return "byte";
		if(sqlType.equals("BIT"))return "boolean";
		if(sqlType.equals("BLOB"))return "BLOB";
		if(sqlType.equals("BOOLEAN"))return "";
		if(sqlType.equals("CHAR"))return "String";
		if(sqlType.equals("CLOB"))return "CLOB";
		if(sqlType.equals("DATALINK"))return "";
		if(sqlType.equals("DATE"))return "Date";
		if(sqlType.equals("DECIMAL"))return "BigDecimal";
		if(sqlType.equals("DISTINCT"))return "";
		if(sqlType.equals("DOUBLE"))return "double";
		if(sqlType.equals("FLOAT"))return "double";
		if(sqlType.equals("INTEGER"))return "int";
		if(sqlType.equals("JAVA_OBJECT"))return "";
		if(sqlType.equals("LONGVARBINARY"))return "LONGbyte";
		if(sqlType.equals("LONGVARCHAR"))return "LONGString";
		if(sqlType.equals("NULL"))return "";
		if(sqlType.equals("NUMERIC"))return "BigDecimal";
		if(sqlType.equals("OTHER"))return "Object";
		if(sqlType.equals("REAL"))return "float";
		if(sqlType.equals("REF"))return "Ref";
		if(sqlType.equals("SMALLINT"))return "short";
		if(sqlType.equals("STRUCT"))return "";
		if(sqlType.equals("TIME"))return "Time";
		if(sqlType.equals("TIMESTAMP"))return "Timestamp";
		if(sqlType.equals("TINYINT"))return "short";
		if(sqlType.equals("VARBINARY"))return "byte";
		if(sqlType.equals("VARCHAR"))return "String";
		return "";
	}

	/**
	 *提交变化的内容到文件
	*/
	public void commit()
	{
		String str = "<!--\r\n"
					+"sql的某一个数据类型映射为"+dbType+"的一个数据类型,此处为人为定义\r\n"
					+"//-->\r\n";
		//写sql-to-DB
		str += "<sql-to-Access>\r\n";
		Vector v1 = (Vector)v_sqltodb[0];
		Vector v2 = (Vector)v_sqltodb[1];
		for(int i=0;i<v1.size();i++)
		{
			str += "\t<type>"+(String)v1.get(i)+"</type><map-type>"+(String)v2.get(i)+"</map-type>\r\n";
		}
		str += "</sql-to-Access>\r\n";

		str += "<!--\r\n"
				+dbType+"的某一个数据类型映射为sql的一个数据类型,此处为程序动态定义\r\n"
				+"因为本程序的操作顺序一定为先导出为程序中定义的数据格式,所以在将已经\r\n"
				+"导出的数据文件导到\r\n"
				+"(1)"+dbType+"类型时:不用查询本配置文件,直接映射为自身;\r\n"
				+"(2)其他类型时:要先将已经导出的有数据库的字段类型映射为sql类型,\r\n"
				+"  再查询sql映射为目标数据库的字段类型,记为上面的列表文件\r\n"
				+"//-->\r\n";
		
		//写DB-to-sql
		str += "<Access-to-sql>\r\n";
		Vector v3 = (Vector)v_dbtosql[0];
		Vector v4 = (Vector)v_dbtosql[1];
		for(int i=0;i<v3.size();i++)
		{
			str += "\t<type>"+(String)v3.get(i)+"</type><map-type>"+(String)v4.get(i)+"</map-type>\r\n";
		}
		str += "</Access-to-sql>\r\n";
		
		DealFile df = new DealFile();
		df.connFOS(conffile);
		df.writeCHStr(str);
		df.closeFOS();

		((Vector)v_sqltodb[0]).clear();
		((Vector)v_sqltodb[1]).clear();
		((Vector)v_dbtosql[0]).clear();
		((Vector)v_dbtosql[1]).clear();
	}


	public static void main(String args[])
	{
		DealConf rc = new DealConf();
		//初始化
		rc.initMapList("backupconf/Access.conf","Access");
		//查询
		//System.out.println(rc.mapsqltoDB("FLOAT"));

		//写入
		rc.addDBtosql("BLOB","-1");
		//更新到文件
		rc.commit();

	}
};

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -