不同数据库之间导入导出

张军 614 0

导入导出,是数据库的一种专用命令。这里的数据库指的是软件方面的所有与之有关的数据库。

不同数据库对于导入导出的要求不同。

张军博客张军博客

张军博客

package zjexec.util;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.io.File;
import java.io.Serializable;
import java.sql.Connection;
import java.util.Date;
import java.util.Vector;
import java.util.prefs.Preferences;

import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JComboBox;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPasswordField;
import javax.swing.JTextField;
import javax.swing.filechooser.FileNameExtensionFilter;

import org.apache.log4j.Logger;

import zjexec.bean.common.Schema;
import zjexec.bean.dialect.AbsDialect;
import zjexec.bean.jframe.ComboxItem;
import zjexec.bean.jframe.DBTableFrame;
import zj.io.util.FileUtil;
import zj.jdbc.bean.DBInfo;
import zj.jdbc.util.JdbcUtil;
import zj.serverTimeout.util.ServiceConnect;

/**
 * 
 * @author zhangjun
 * 
 */
public class SchemaFrameUtil implements Serializable {
	private static final long serialVersionUID = 1L;
	private transient static final Logger log = Logger.getLogger(SchemaFrameUtil.class);
	private JFrame jframe = null;
	/**
	 * btn1:测试源数据源连接 btn2:测试目标数据源连接 btn3:导出指定表 btn4:导入指定表 btn6:打开*.DDL btn18:DDL保存... btn20:DML浏览... btn21:DML保存... execBtn:开始执行... closeBtn:关闭
	 **/
	private JButton btn1, btn2, btn3, btn4, btn6, btn18, btn20, btn21, execBtn, closeBtn;
	/**
	 * jtf3:源ConnectionURL值 jtf4:源UserName jtf5:源Password jtf6:open-DDL文件 jtf13:目标ConnectionURL值 jtf14:目标UserName jtf15:目标Password jtf18:save-DDL文件 jlb20:open-DML文件 jlb21:save-DML文件
	 */
	private JTextField jtf3, jtf4, jtf5, jtf6, jtf13, jtf14, jtf15, jtf18, jtf20, jtf21;
	private JLabel jlb1, jlb2, jlb3, jlb4, jlb5, jlb6, jlb7, jlb8, jlb9, jlb10, jlb11, jlb13, jlb14, jlb15, jlb16, jlb17, jlb18, jlb20, jlb21, jlb22, jlb23;

	private int linex = 30;
	private int liney1 = 10, liney2 = 50, liney3 = 90, liney4 = 130, liney5 = 170, liney6 = 210, liney7 = 250, liney8 = 290, liney9 = 330, liney10 = 370, liney11 = 410, liney12 = 450, liney13 = 490;
	/** jcb1:导出DDL-SQL,jcb2:导出DML-SQL,jcb3:多个dml-sql文件 **/
	private JCheckBox jcb1, jcb2, jcb3;
	/**
	 * select_jlb1:操作类型("请选择", "0:数据源导入", "1:DDL文件导入","2:DML文件导入","3:DDL文件导出","4:DML文件导出") select_jlb2:源DriverTemplate类型值 select_jlb9:目标数据源DDL select_jlb10:目标数据源DML select_jlb12:目标DriverTemplate类型值 select_jlb23 :导出DB文件格式方言
	 */
	private JComboBox select_jlb1, select_jlb2, select_jlb9, select_jlb10, select_jlb12, select_jlb23;
	/**
	 * checkbox_jlb1:选择 private JCheckBox checkbox_jcb1; radio_jrb1:DDL操作 radio_jrb2:DML操作 private JRadioButton radio_jrb1, radio_jrb2;
	 */
	private String line = "----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------";
	private Connection conn;
	private String absDialect;
	private String title = "多数据库之间表操作-张军(手机:15656856396,QQ:360901061)制作";
	/** 测试源数据源连接 **/
	private static final String btn1Text = "测试源数据源连接";
	/** 测试目标数据源连接 **/
	private static final String btn2Text = "测试目标数据源连接";
	/** 导出指定表 **/
	private static final String btn3Text = "导出指定表";
	/** 导入指定表 **/
	private static final String btn4Text = "导入指定表";
	/** 打开*.DDL **/
	private static final String btn6Text = "打开*.DDL";
	/** 保存DDL文件 **/
	private static final String jlb18Text = "保存DDL文件";
	/** 操作类型 **/
	private static final String jlb1Text = "操作类型";
	// TODO d
	/** 目标DML操作 **/
	private static final String jlb10Text = "目标DML操作";
	/** DriverTemplate **/
	private static final String jlb11Text = "驱动模板";
	/** ConnectionURL **/
	private static final String jlb13Text = "连接URL";
	/** UserName **/
	private static final String jlb14Text = "用户名";
	/** Password **/
	private static final String jlb15Text = "密码";
	/** 开始执行... **/
	private static final String execBtnText = "开始执行...";
	/** 关闭 **/
	private static final String closeBtnText = "关闭";
	/** 请选择 **/
	private static final String selectDefaultText = "请选择";
	/** 导出DB文件格式方言 **/
	private static final String jlb23Text = "导出DB文件格式方言";
	/** DriverTemplate **/
	private static final String jlb2Text = "驱动模板";
	/** ConnectionURL **/
	private static final String jlb3Text = "连接URL";
	/** UserName **/
	private static final String jlb4Text = "用户名";
	/** Password **/
	private static final String jlb5Text = "密码";
	/** 导出DDL-SQL **/
	private static final String jcb1Text = "导出DDL-SQL";
	/** 导出DML-SQL **/
	private static final String jcb2Text = "导出DML-SQL";
	/** 导出DML-SQL **/
	private static final String jcb3Text = "多个SQL文件";
	/** 选择DDL文件 **/
	private static final String jlb6Text = "选择DDL文件";
	/** 保存*.DDL **/
	private static final String btn18Text = "保存*.DDL";
	/** 选择DML文件 **/
	private static final String jlb20Text = "选择DML文件";
	/** 打开*.DML **/
	private static final String btn20Text = "打开*.DML";
	/** 保存DML文件 **/
	private static final String jlb21Text = "保存DML文件";
	/** 保存*.DML **/
	private static final String btn21Text = "保存*.DML";
	/** 目标DDL操作 **/
	private static final String jlb9Text = "目标DDL操作";

	// /****/
	// private static final String = ;
	// /****/
	// private static final String = ;
	// /****/
	// private static final String = ;
	// /****/
	// private static final String = ;

	/**
	 * 禁用源数据源
	 */
	private void disabledSrcDataSource() {
		this.select_jlb2.setEnabled(false);
		this.jtf3.setEditable(false);
		this.jtf4.setEditable(false);
		this.jtf5.setEditable(false);
		this.btn1.setEnabled(false);
		this.btn3.setEnabled(false);

		// this.select_jlb2.setSelectedIndex(0);
		// this.jtf5.setText("");
		// this.jtf3.setText("");
		// this.jtf4.setText("");
	}

	/**
	 * 启用源数据源
	 */
	private void enabledSrcDataSource() {
		this.select_jlb2.setEnabled(true);
		if (!"".equals(((ComboxItem) select_jlb2.getSelectedItem()).value)) {
			this.jtf3.setEditable(true);
			this.jtf4.setEditable(true);
			this.jtf5.setEditable(true);
		}
		this.btn1.setEnabled(true);
		if (otherFrameExport == null) {
			this.btn3.setEnabled(true);
		}
	}

	/**
	 * 禁用目标数据源
	 */
	private void disabledDescDataSource() {
		this.select_jlb12.setEnabled(false);
		this.jtf13.setEditable(false);
		this.jtf14.setEditable(false);
		this.jtf15.setEditable(false);
		this.btn2.setEnabled(false);
		this.btn4.setEnabled(false);

		// this.select_jlb12.setSelectedIndex(0);
		// this.jtf13.setText("");
		// this.jtf14.setText("");
		// this.jtf15.setText("");
	}

	/**
	 * 启用目标数据源
	 */
	private void enabledDescDataSource() {
		this.select_jlb12.setEnabled(true);
		if (!"".equals(((ComboxItem) select_jlb12.getSelectedItem()).value)) {
			this.jtf13.setEditable(true);
			this.jtf14.setEditable(true);
			this.jtf15.setEditable(true);
		}
		this.btn2.setEnabled(true);
		if (otherFrameImport == null) {
			this.btn4.setEnabled(true);
		}
	}

	/**
	 * 禁用DDL/DML单选/选择框
	 */
	private void disabledDescDDLDML() {
		this.select_jlb9.setEnabled(false);
		this.select_jlb10.setEnabled(false);
		// this.select_jlb9.setSelectedIndex(0);
		// this.select_jlb10.setSelectedIndex(0);
	}

	/**
	 * 通过DDL/DML单选判断禁用DDL
	 */
	private void disabledDescDDLByRadio() {
		this.select_jlb9.setEnabled(false);
		this.select_jlb10.setEnabled(true);
		// this.select_jlb9.setSelectedIndex(0);
	}

	/**
	 * 通过DDL/DML单选判断禁用DML
	 */
	private void disabledDescDMLByRadio() {
		this.select_jlb9.setEnabled(true);
		this.select_jlb10.setEnabled(false);
		// this.select_jlb10.setSelectedIndex(0);
	}

	/**
	 * 禁用DDL文件
	 */
	private void disabledDDLFile() {
		this.jtf6.setEditable(false);
		this.btn6.setEnabled(false);
		this.jtf18.setEditable(false);
		this.btn18.setEnabled(false);
		this.jcb1.setEnabled(false);
		this.jcb2.setEnabled(false);
		// this.jtf6.setText("");
		// this.jtf18.setText("");
		disabledSqlFileType();
	}

	/**
	 * 启用open-DDL文件
	 */
	private void enableOpenDDLFile() {
		this.jtf6.setEditable(true);
		this.btn6.setEnabled(true);
	}

	/**
	 * 启用save-DDL文件
	 */
	private void enableSaveDDLFile() {
		this.jtf18.setEditable(true);
		this.btn18.setEnabled(true);
		this.jcb1.setEnabled(true);
	}

	/**
	 * 禁用DML文件
	 */
	private void disabledDMLFile() {
		this.jtf20.setEditable(false);
		this.btn20.setEnabled(false);
		this.jtf21.setEditable(false);
		this.btn21.setEnabled(false);
		// this.jtf20.setText("");
		// this.jtf21.setText("");
		this.jcb1.setEnabled(false);
	}

	/**
	 * 启用open-DML文件
	 */
	private void enableOpenDMLFile() {
		this.jtf20.setEditable(true);
		this.btn20.setEnabled(true);
	}

	/**
	 * 启用save-DML文件
	 */
	private void enableSaveDMLFile() {
		this.jtf21.setEditable(true);
		this.btn21.setEnabled(true);
		this.jcb2.setEnabled(true);
	}

	/**
	 * 禁用共通
	 */
	private void disabled() {
		this.select_jlb23.setEnabled(false);
	}

	/**
	 * 启用共通
	 */
	private void enable() {
		this.select_jlb23.setEnabled(true);
	}

	/**
	 * 禁用导出sql文件类型
	 */
	private void disabledSqlFileType() {
		this.jcb3.setEnabled(false);
	}

	/**
	 * 启用导出sql文件类型
	 */
	private void enableSqlFileType() {
		this.jcb3.setEnabled(true);
	}

	// select_jlb1.setEditable(true);//combobox设为可编辑
	/**
	 * 主窗口
	 */
	public void setFrame() {
		jframe = new JFrame(title);
		addEventHandler();
		jframe.setLayout(null);
		setComboxItems();
		// 源数据源判断*********************************************
		jlb1 = new JLabel(jlb1Text);
		jlb1.setBounds(linex + 5, liney1, 105, 30);
		jframe.add(jlb1);

		select_jlb1.setBounds(linex + 115, liney1, 105, 30);
		jframe.add(select_jlb1);

		btn1 = new JButton(btn1Text);
		btn1.setBounds(linex + 225, liney1, 150, 30);
		jframe.add(btn1);

		btn3 = new JButton(btn3Text);
		btn3.setBounds(linex + 380, liney1, 120, 30);
		jframe.add(btn3);

		btn2 = new JButton(btn2Text);
		btn2.setBounds(linex + 505, liney1, 150, 30);
		jframe.add(btn2);

		btn4 = new JButton(btn4Text);
		btn4.setBounds(linex + 660, liney1, 120, 30);
		jframe.add(btn4);

		jlb23 = new JLabel(jlb23Text);
		jlb23.setBounds(linex + 785, liney1, 125, 30);
		jframe.add(jlb23);

		select_jlb23.setBounds(linex + 915, liney1, 120, 30);
		jframe.add(select_jlb23);
		// *********************************************
		jlb8 = new JLabel("-----------------------------------------------------------------------------------------------------------------------源数据库配置开始-----------------------------------------------------------------------------------------------------------------------");
		jlb8.setBounds(linex + 5, liney2, 1080, 30);
		jframe.add(jlb8);
		// 源数据源*********************************************

		jlb2 = new JLabel(jlb2Text);
		jlb2.setBounds(linex + 5, liney3, 105, 30);
		jframe.add(jlb2);

		select_jlb2.setBounds(linex + 115, liney3, 105, 30);
		jframe.add(select_jlb2);

		jlb3 = new JLabel(jlb3Text);
		jlb3.setBounds(linex + 225, liney3, 105, 30);
		jframe.add(jlb3);

		jtf3 = new JTextField();
		jtf3.setBounds(linex + 335, liney3, 305, 30);
		jframe.add(jtf3);

		jlb4 = new JLabel(jlb4Text);
		jlb4.setBounds(linex + 645, liney3, 105, 30);
		jframe.add(jlb4);

		jtf4 = new JTextField();
		jtf4.setBounds(linex + 755, liney3, 105, 30);
		jframe.add(jtf4);

		jlb5 = new JLabel(jlb5Text);
		jlb5.setBounds(linex + 865, liney3, 105, 30);
		jframe.add(jlb5);

		jtf5 = new JPasswordField();
		jtf5.setBounds(linex + 975, liney3, 105, 30);
		jframe.add(jtf5);
		// DDL文件*********************************************
		jlb7 = new JLabel("-----------------------------------------------------------------------------------------------------------------------源数据库配置结束-----------------------------------------------------------------------------------------------------------------------");
		jlb7.setBounds(linex + 5, liney4, 1080, 30);
		jframe.add(jlb7);
		// *********************************************
		jcb1 = new JCheckBox(jcb1Text);
		jcb1.setBounds(linex + 5, liney5, 120, 30);
		jframe.add(jcb1);

		jcb2 = new JCheckBox(jcb2Text);
		jcb2.setBounds(linex + 130, liney5, 120, 30);
		jframe.add(jcb2);

		jcb3 = new JCheckBox(jcb3Text);
		jcb3.setBounds(linex + 255, liney5, 120, 30);
		jframe.add(jcb3);

		jlb6 = new JLabel(jlb6Text);
		jlb6.setBounds(linex + 5, liney6, 105, 30);
		jframe.add(jlb6);

		jtf6 = new JTextField();
		jtf6.setBounds(linex + 115, liney6, 305, 30);
		jframe.add(jtf6);

		btn6 = new JButton(btn6Text);
		btn6.setBounds(linex + 425, liney6, 100, 30);
		jframe.add(btn6);

		jlb18 = new JLabel(jlb18Text);
		jlb18.setBounds(linex + 530, liney6, 105, 30);
		jframe.add(jlb18);

		jtf18 = new JTextField();
		jtf18.setBounds(linex + 640, liney6, 305, 30);
		jframe.add(jtf18);

		btn18 = new JButton(btn18Text);
		btn18.setBounds(linex + 950, liney6, 100, 30);
		jframe.add(btn18);

		// *********************************************
		// jlb19 = new JLabel(line);
		// jlb19.setBounds(linex + 5, liney6, 1080, 30);
		// jframe.add(jlb19);
		// DML文件*********************************************
		jlb20 = new JLabel(jlb20Text);
		jlb20.setBounds(linex + 5, liney7, 105, 30);
		jframe.add(jlb20);

		jtf20 = new JTextField();
		jtf20.setBounds(linex + 115, liney7, 305, 30);
		jframe.add(jtf20);

		btn20 = new JButton(btn20Text);
		btn20.setBounds(linex + 425, liney7, 100, 30);
		jframe.add(btn20);

		jlb21 = new JLabel(jlb21Text);
		jlb21.setBounds(linex + 530, liney7, 105, 30);
		jframe.add(jlb21);

		jtf21 = new JTextField();
		jtf21.setBounds(linex + 640, liney7, 305, 30);
		jframe.add(jtf21);

		btn21 = new JButton(btn21Text);
		btn21.setBounds(linex + 950, liney7, 100, 30);
		jframe.add(btn21);
		// *********************************************
		jlb22 = new JLabel(line);
		jlb22.setBounds(linex + 5, liney8, 1080, 30);
		jframe.add(jlb22);
		// 目标数据源操作*********************************************
		jlb9 = new JLabel(jlb9Text);
		jlb9.setBounds(linex + 5, liney9, 105, 30);
		jframe.add(jlb9);

		// ButtonGroup bg = new ButtonGroup();
		// radio_jrb1 = new JRadioButton("DDL");
		// radio_jrb1.setBounds(linex+115, liney9, 50, 30);
		// bg.add(radio_jrb1);
		// radio_jrb2 = new JRadioButton("DML");
		// radio_jrb2.setBounds(linex+170, liney9, 50, 30);
		// bg.add(radio_jrb2);
		// jframe.add(radio_jrb1);
		// jframe.add(radio_jrb2);

		select_jlb9.setBounds(linex + 115, liney9, 105, 30);
		jframe.add(select_jlb9);

		jlb10 = new JLabel(jlb10Text);
		jlb10.setBounds(linex + 225, liney9, 105, 30);
		jframe.add(jlb10);

		select_jlb10.setBounds(linex + 335, liney9, 105, 30);
		jframe.add(select_jlb10);
		// *********************************************
		jlb16 = new JLabel("-----------------------------------------------------------------------------------------------------------------------目标数据库配置开始-----------------------------------------------------------------------------------------------------------------------");
		jlb16.setBounds(linex + 5, liney10, 1080, 30);
		jframe.add(jlb16);
		// 目标数据源*********************************************
		jlb11 = new JLabel(jlb11Text);
		jlb11.setBounds(linex + 5, liney11, 105, 30);
		jframe.add(jlb11);

		select_jlb12.setBounds(linex + 115, liney11, 105, 30);
		jframe.add(select_jlb12);

		jlb13 = new JLabel(jlb13Text);
		jlb13.setBounds(linex + 225, liney11, 105, 30);
		jframe.add(jlb13);

		jtf13 = new JTextField();
		jtf13.setBounds(linex + 335, liney11, 305, 30);
		jframe.add(jtf13);

		jlb14 = new JLabel(jlb14Text);
		jlb14.setBounds(linex + 645, liney11, 105, 30);
		jframe.add(jlb14);

		jtf14 = new JTextField();
		jtf14.setBounds(linex + 755, liney11, 105, 30);
		jframe.add(jtf14);

		jlb15 = new JLabel(jlb15Text);
		jlb15.setBounds(linex + 865, liney11, 105, 30);
		jframe.add(jlb15);

		jtf15 = new JPasswordField();
		jtf15.setBounds(linex + 975, liney11, 105, 30);
		jframe.add(jtf15);
		// *********************************************
		jlb17 = new JLabel("-----------------------------------------------------------------------------------------------------------------------目标数据库配置结束-----------------------------------------------------------------------------------------------------------------------");
		jlb17.setBounds(linex + 5, liney12, 1080, 30);
		jframe.add(jlb17);
		// 操作*********************************************
		execBtn = new JButton(execBtnText);
		execBtn.setBounds(linex + 330, liney13, 100, 30);
		jframe.add(execBtn);

		closeBtn = new JButton(closeBtnText);
		closeBtn.setBounds(linex + 560, liney13, 120, 30);
		jframe.add(closeBtn);

		// 添加监听*********************************************
		btn1.addActionListener(new ExecCommondActionEvent());
		btn2.addActionListener(new ExecCommondActionEvent());
		btn3.addActionListener(new ExecCommondActionEvent());
		btn4.addActionListener(new ExecCommondActionEvent());
		btn6.addActionListener(new ExecCommondActionEvent());
		btn18.addActionListener(new ExecCommondActionEvent());
		btn20.addActionListener(new ExecCommondActionEvent());
		btn21.addActionListener(new ExecCommondActionEvent());
		execBtn.addActionListener(new ExecCommondActionEvent());
		closeBtn.addActionListener(new ExecCommondActionEvent());
		select_jlb1.addItemListener(select_jlb1Listener);
		select_jlb2.addItemListener(select_DBType);
		select_jlb12.addItemListener(select_DBType);
		select_jlb23.addItemListener(select_jlb23Listener);
		// radio_jrb1.addActionListener(new Radio_jrb1Listener());
		// radio_jrb2.addActionListener(new Radio_jrb1Listener());
		jcb2.addItemListener(jcb2Listener);
		// *********************************************
		disabledSrcDataSource();
		disabledDescDataSource();
		disabledDDLFile();
		disabledDMLFile();
		disabledDescDDLDML();
		disabled();
		// *********************************************
	}

	/** 显示菜单 **/
	public void showMe() {
		jframe.setSize(1150, 630);
		jframe.setLocation(10, 10);
		jframe.setVisible(true);
		jframe.setResizable(false);
		jframe.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
		jframe.setAlwaysOnTop(false);
	}

	/**
	 * 关闭窗口
	 */
	public void addEventHandler() {
		jframe.addWindowListener(new WindowAdapter() {
			public void windowClosing(WindowEvent e) {
				exitConfirm();
			}
		});
	}

	private ItemListener select_jlb1Listener = new ItemListener() {
		public void itemStateChanged(ItemEvent e) {
			if (e.getStateChange() == ItemEvent.SELECTED) {
				JComboBox jcb = (JComboBox) e.getSource();
				ComboxItem item = (ComboxItem) jcb.getSelectedItem();
				disabledSrcDataSource();
				disabledDescDataSource();
				disabledDDLFile();
				disabledDMLFile();
				disabledDescDDLDML();
				// "请选择", "0:数据源导入", "1:DDL文件导入","2:DML文件导入","3:DDL文件导出","4:DML文件导出"
				enable();
				if (Schema.TYPE_DDL_DML.equals(item.value)) {
					enabledSrcDataSource();
					enabledDescDataSource();
					btn4.setEnabled(false);
				} else if (Schema.TYPE_IMPORT_DDL.equals(item.value)) {
					enabledDescDataSource();
					disabledDescDMLByRadio();
					enableOpenDDLFile();
				} else if (Schema.TYPE_IMPORT_DML.equals(item.value)) {
					enabledDescDataSource();
					disabledDescDDLByRadio();
					enableOpenDMLFile();
				} else if (Schema.TYPE_EXPORT_DDL.equals(item.value)) {
					enabledSrcDataSource();
					enableSaveDDLFile();
				} else if (Schema.TYPE_EXPORT_DML.equals(item.value)) {
					enabledSrcDataSource();
					enableSaveDMLFile();
				} else {
					disabled();
				}
			}
		}
	};

	private String getJtfValue13(String dbType) {
		jtf13.setEditable(true);
		jtf14.setEditable(true);
		jtf15.setEditable(true);
		String default_jtf13 = jtf13.getText();
		// "请选择", "0:Oracle", "1:MySql"
		if (JdbcUtil.DB_TYPE_ORACLE.equals(dbType)) {
			default_jtf13 = JdbcUtil.DB_TYPE_ORACLE_URL;
		} else if (JdbcUtil.DB_TYPE_MYSQL.equals(dbType)) {
			default_jtf13 = JdbcUtil.DB_TYPE_MYSQL_URL;
		} else if (JdbcUtil.DB_TYPE_INFORMIX.equals(dbType)) {
			default_jtf13 = JdbcUtil.DB_TYPE_INFORMIX_URL;
		} else if (JdbcUtil.DB_TYPE_DB2.equals(dbType)) {
			default_jtf13 = JdbcUtil.DB_TYPE_DB2_URL;
		} else {
			jtf13.setEditable(false);
			jtf14.setEditable(false);
			jtf15.setEditable(false);
		}
		return default_jtf13;
	}

	private String getJtfValue3(String dbType) {
		jtf3.setEditable(true);
		jtf4.setEditable(true);
		jtf5.setEditable(true);
		String default_jtf3 = jtf3.getText();
		// "请选择", "0:Oracle", "1:MySql"
		if (JdbcUtil.DB_TYPE_ORACLE.equals(dbType)) {
			default_jtf3 = JdbcUtil.DB_TYPE_ORACLE_URL;
		} else if (JdbcUtil.DB_TYPE_MYSQL.equals(dbType)) {
			default_jtf3 = JdbcUtil.DB_TYPE_MYSQL_URL;
		} else if (JdbcUtil.DB_TYPE_INFORMIX.equals(dbType)) {
			default_jtf3 = JdbcUtil.DB_TYPE_INFORMIX_URL;
		} else if (JdbcUtil.DB_TYPE_DB2.equals(dbType)) {
			default_jtf3 = JdbcUtil.DB_TYPE_DB2_URL;
		} else {
			jtf3.setEditable(false);
			jtf4.setEditable(false);
			jtf5.setEditable(false);
		}
		return default_jtf3;
	}

	private ItemListener select_DBType = new ItemListener() {
		public void itemStateChanged(ItemEvent e) {
			if (e.getStateChange() == ItemEvent.SELECTED) {
				JComboBox jcb = (JComboBox) e.getSource();
				ComboxItem item = (ComboxItem) jcb.getSelectedItem();
				String dbType = item.value;
				String type = item.type;
				item = (ComboxItem) select_jlb1.getSelectedItem();
				// "请选择", "0:数据源导入", "1:DDL文件导入","2:DML文件导入","3:DDL文件导出","4:DML文件导出"
				String dbType2 = item.value;
				String default_jtf13 = jtf13.getText();
				String default_jtf3 = jtf3.getText();
				if (Schema.TYPE_IMPORT_DDL.equals(dbType2) || Schema.TYPE_IMPORT_DML.equals(dbType2)) {
					default_jtf13 = getJtfValue13(dbType);
				} else if (Schema.TYPE_EXPORT_DDL.equals(dbType2) || Schema.TYPE_EXPORT_DML.equals(dbType2)) {
					default_jtf3 = getJtfValue3(dbType);
				} else if (Schema.TYPE_DDL_DML.equals(dbType2)) {
					if (Schema.TYPE_0.equals(type)) {
						default_jtf3 = getJtfValue3(dbType);
					} else if (Schema.TYPE_1.equals(type)) {
						default_jtf13 = getJtfValue13(dbType);
					} else {

					}
				}
				jtf13.setText(default_jtf13);
				jtf3.setText(default_jtf3);
			}
		}
	};
	private ItemListener select_jlb23Listener = new ItemListener() {
		public void itemStateChanged(ItemEvent e) {
			if (e.getStateChange() == ItemEvent.SELECTED) {
				JComboBox jcb = (JComboBox) e.getSource();
				ComboxItem item = (ComboxItem) jcb.getSelectedItem();
				absDialect = item.value;
				log.debug("导出DB文件格式方言:" + absDialect);
			}
		}
	};

	// private class Radio_jrb1Listener implements ActionListener {
	// public void actionPerformed(ActionEvent e) {
	// JRadioButton rb = (JRadioButton) e.getSource();
	// if ("DML".equalsIgnoreCase(rb.getText())) {
	// disabledDescDDLByRadio();
	// } else {
	// disabledDescDMLByRadio();
	// }
	// }
	// }
	private ItemListener jcb2Listener = new ItemListener() {
		public void itemStateChanged(ItemEvent e) {
			JCheckBox source = (JCheckBox) e.getSource();
			if (source.isEnabled()) {
				if (source.isSelected()) {
					enableSqlFileType();
				} else {
					disabledSqlFileType();
				}
			} else {
			}
		}
	};

	/**
	 * 设置下拉框值
	 * 
	 * @author zhangjun
	 * 
	 */
	private void setComboxItems() {
		Vector<ComboxItem> model = null;
		// 源数据源
		// "请选择", "0:数据源导入", "1:DDL文件导入","2:DML文件导入","3:DDL文件导出","4:DML文件导出"
		model = new Vector<ComboxItem>();
		model.addElement(new ComboxItem("", selectDefaultText));
		model.addElement(new ComboxItem(Schema.TYPE_DDL_DML, "数据源导入"));
		model.addElement(new ComboxItem(Schema.TYPE_IMPORT_DDL, "DDL文件导入"));
		model.addElement(new ComboxItem(Schema.TYPE_IMPORT_DML, "DML文件导入"));
		model.addElement(new ComboxItem(Schema.TYPE_EXPORT_DDL, "DDL文件导出"));
		model.addElement(new ComboxItem(Schema.TYPE_EXPORT_DML, "DML文件导出"));
		select_jlb1 = new JComboBox(model);
		model = new Vector<ComboxItem>();
		model.addElement(new ComboxItem("", selectDefaultText, Schema.TYPE_0));
		model.addElement(new ComboxItem(JdbcUtil.DB_TYPE_ORACLE, JdbcUtil.DB_TYPE_ORACLE, Schema.TYPE_0));
		model.addElement(new ComboxItem(JdbcUtil.DB_TYPE_MYSQL, JdbcUtil.DB_TYPE_MYSQL, Schema.TYPE_0));
		model.addElement(new ComboxItem(JdbcUtil.DB_TYPE_INFORMIX, JdbcUtil.DB_TYPE_INFORMIX, Schema.TYPE_0));
		model.addElement(new ComboxItem(JdbcUtil.DB_TYPE_DB2, JdbcUtil.DB_TYPE_DB2, Schema.TYPE_0));
		select_jlb2 = new JComboBox(model);
		// 目标数据源
		// "请选择", "DDL全部", "删除表", "创建表", "创建索引", "创建外键", "删除索引", "删除外键"
		model = new Vector<ComboxItem>();
		model.addElement(new ComboxItem("", selectDefaultText));
		model.addElement(new ComboxItem(null, "DDL全部"));
		model.addElement(new ComboxItem(Schema.DDL_TYPE_CREATE_TABLE, "创建表"));
		model.addElement(new ComboxItem(Schema.DDL_TYPE_CREATE_FK, "创建外键"));
		model.addElement(new ComboxItem(Schema.DDL_TYPE_CREATE_IDX, "创建索引"));
		model.addElement(new ComboxItem(Schema.DDL_TYPE_CREATE_REMARK, "创建备注"));
		model.addElement(new ComboxItem(Schema.DDL_TYPE_DROP_TABLE, "删除表"));
		model.addElement(new ComboxItem(Schema.DDL_TYPE_DROP_FK, "删除外键"));
		model.addElement(new ComboxItem(Schema.DDL_TYPE_DROP_IDX, "删除索引"));
		select_jlb9 = new JComboBox(model);
		// "请选择", "插入数据"
		model = new Vector<ComboxItem>();
		model.addElement(new ComboxItem("", selectDefaultText));
		model.addElement(new ComboxItem(Schema.DML_TYPE_INSERT_TABLE, "插入数据"));
		select_jlb10 = new JComboBox(model);
		model = new Vector<ComboxItem>();
		model.addElement(new ComboxItem("", selectDefaultText, Schema.TYPE_1));
		model.addElement(new ComboxItem(JdbcUtil.DB_TYPE_ORACLE, JdbcUtil.DB_TYPE_ORACLE, Schema.TYPE_1));
		model.addElement(new ComboxItem(JdbcUtil.DB_TYPE_MYSQL, JdbcUtil.DB_TYPE_MYSQL, Schema.TYPE_1));
		model.addElement(new ComboxItem(JdbcUtil.DB_TYPE_INFORMIX, JdbcUtil.DB_TYPE_INFORMIX, Schema.TYPE_1));
		model.addElement(new ComboxItem(JdbcUtil.DB_TYPE_DB2, JdbcUtil.DB_TYPE_DB2, Schema.TYPE_1));
		select_jlb12 = new JComboBox(model);
		model = new Vector<ComboxItem>();
		model.addElement(new ComboxItem("", selectDefaultText));
		model.addElement(new ComboxItem(AbsDialect.DB_FILE_TYPE_ORACLE, JdbcUtil.DB_TYPE_ORACLE));
		model.addElement(new ComboxItem(AbsDialect.DB_FILE_TYPE_MYSQL, JdbcUtil.DB_TYPE_MYSQL));
		model.addElement(new ComboxItem(AbsDialect.DB_FILE_TYPE_INFORMIX, JdbcUtil.DB_TYPE_INFORMIX));
		model.addElement(new ComboxItem(AbsDialect.DB_FILE_TYPE_DB2, JdbcUtil.DB_TYPE_DB2));
		select_jlb23 = new JComboBox(model);

	}

	/***
	 * 测试DB连接
	 * 
	 * @param str
	 * @return
	 * @throws Exception
	 */
	private String testDBConnection(String str) throws Exception {
		String msg = "";
		DBInfo dbInfo = new DBInfo();
		try {
			if (btn1Text.equals(str)) {
				ComboxItem item = (ComboxItem) select_jlb2.getSelectedItem();
				if ("".equals(item.value)) {
					throw new Exception("请选择源驱动模板");
				}
				dbInfo.setUserName(jtf4.getText());
				dbInfo.setPassword(jtf5.getText());
				dbInfo.setUrl(jtf3.getText());
				dbInfo.setDbType(((ComboxItem) select_jlb2.getSelectedItem()).value);
			} else if (btn2Text.equals(str)) {
				ComboxItem item = (ComboxItem) select_jlb12.getSelectedItem();
				if ("".equals(item.value)) {
					throw new Exception("请选择目标驱动模板");
				}
				dbInfo.setUserName(jtf14.getText());
				dbInfo.setPassword(jtf15.getText());
				dbInfo.setUrl(jtf13.getText());
				dbInfo.setDbType(((ComboxItem) select_jlb12.getSelectedItem()).value);
			}
			log.debug("数据库类型:" + dbInfo.getDbType());
			log.debug("数据库URL:" + dbInfo.getUrl());
			log.debug("数据库用户名:" + dbInfo.getUserName());
			log.debug("数据库密码:" + dbInfo.getPassword());
			if (btn1Text.equals(str)) {
				conn = (Connection) ServiceConnect.getServiceValue(new JdbcUtil(), "getConnInstance", new Object[] { dbInfo }, 5000);
				if (conn == null) {
					msg = "源数据源连接异常";
					throw new Exception(msg);
				} else {
					msg = "源数据源连接成功";
				}
			} else if (btn2Text.equals(str)) {
				File logFile = new File("C:" + File.separator + "log" + File.separator);
				if (!logFile.exists()) {
					logFile.mkdirs();
				}
				conn = (Connection) ServiceConnect.getServiceValue(new JdbcUtil(), "getConnInstance", new Object[] { dbInfo }, 5000);
				if (conn == null) {
					msg = "目标数据源数据源连接异常";
					throw new Exception(msg);
				} else {
					msg = "目标数据源数据源连接成功";
				}
			}
		} catch (Exception e1) {
			msg = "数据库连接失败" + e1.getMessage();
			e1.printStackTrace();
			throw new Exception(msg);
		}
		return msg;
	}

	/**
	 * 默认true通过,false不通过 验证数据源
	 * 
	 * @param type
	 *            [0:源,1:目标]
	 * @return
	 */
	private boolean chkDB(String type) {
		ComboxItem item = null;
		if (type == null || Schema.TYPE_0.equals(type)) {
			item = (ComboxItem) select_jlb2.getSelectedItem();
			if ("".equals(item.value)) {
				JOptionPane.showMessageDialog(null, "请选择源驱动模板", "消息提示", JOptionPane.INFORMATION_MESSAGE);
				return false;
			}
			if ("".equals(this.jtf3.getText().trim())) {
				JOptionPane.showMessageDialog(null, "请填写源数据源连接URL串", "消息提示", JOptionPane.INFORMATION_MESSAGE);
				return false;
			}
			if ("".equals(this.jtf4.getText().trim())) {
				JOptionPane.showMessageDialog(null, "请填写源数据源用户名", "消息提示", JOptionPane.INFORMATION_MESSAGE);
				return false;
			}
			if ("".equals(this.jtf5.getText().trim())) {
				JOptionPane.showMessageDialog(null, "请填写源数据源密码", "消息提示", JOptionPane.INFORMATION_MESSAGE);
				return false;
			}
		}
		if (type == null || Schema.TYPE_1.equals(type)) {
			item = (ComboxItem) select_jlb12.getSelectedItem();
			if ("".equals(item.value)) {
				JOptionPane.showMessageDialog(null, "请选择目标驱动模板", "消息提示", JOptionPane.INFORMATION_MESSAGE);
				return false;
			}
			if ("".equals(this.jtf13.getText().trim())) {
				JOptionPane.showMessageDialog(null, "请填写目标数据源连接URL串", "消息提示", JOptionPane.INFORMATION_MESSAGE);
				return false;
			}
			if ("".equals(this.jtf14.getText().trim())) {
				JOptionPane.showMessageDialog(null, "请填写目标数据源用户名", "消息提示", JOptionPane.INFORMATION_MESSAGE);
				return false;
			}
			if ("".equals(this.jtf15.getText().trim())) {
				JOptionPane.showMessageDialog(null, "请填写目标数据源密码", "消息提示", JOptionPane.INFORMATION_MESSAGE);
				return false;
			}
		}
		return true;
	}

	/** 验证导入DDL文件 **/
	private boolean chkJtf6() {
		try {
			String sjtf6 = this.jtf6.getText().trim();
			if ("".equals(sjtf6)) {
				JOptionPane.showMessageDialog(null, "DDL文件不存在,请选择DDL文件", "消息提示", JOptionPane.INFORMATION_MESSAGE);
				return false;
			}
			File file = new File(sjtf6);
			if (!file.exists()) {
				JOptionPane.showMessageDialog(null, "DDL文件不存在,请选择DDL文件", "消息提示", JOptionPane.INFORMATION_MESSAGE);
				return false;
			}
		} catch (Exception e) {
			JOptionPane.showMessageDialog(null, "异常信息:" + e.getMessage(), "消息提示", JOptionPane.INFORMATION_MESSAGE);
			e.printStackTrace();
			return false;
		}
		return true;
	}

	/** 验证导入DML文件 **/
	private boolean chkJtf20() {
		try {
			String sjtf20 = this.jtf20.getText();
			if ("".equals(sjtf20)) {
				JOptionPane.showMessageDialog(null, "DML文件不存在,请选择DML文件", "消息提示", JOptionPane.INFORMATION_MESSAGE);
				return false;
			}
			File file = new File(sjtf20);
			if (!file.exists()) {
				JOptionPane.showMessageDialog(null, "DML文件不存在,请选择DML文件", "消息提示", JOptionPane.INFORMATION_MESSAGE);
				return false;
			}
		} catch (Exception e) {
			JOptionPane.showMessageDialog(null, "异常信息:" + e.getMessage(), "消息提示", JOptionPane.INFORMATION_MESSAGE);
			e.printStackTrace();
			return false;
		}
		return true;
	}

	/** 验证导出DDL文件 **/
	private boolean chkJtf18() {
		try {
			String sjtf18 = this.jtf18.getText();
			if ("".equals(sjtf18)) {
				JOptionPane.showMessageDialog(null, "请选择保存的DDL文件路径", "消息提示", JOptionPane.INFORMATION_MESSAGE);
				return false;
			}
			String dirPath = FileUtil.getFileNameExtension(sjtf18)[0];
			File file = new File(dirPath);
			if (!file.exists()) {
				file.mkdirs();
			}
		} catch (Exception e) {
			JOptionPane.showMessageDialog(null, "异常信息:" + e.getMessage(), "消息提示", JOptionPane.INFORMATION_MESSAGE);
			e.printStackTrace();
			return false;
		}
		return true;
	}

	/** 验证导出DML文件 **/
	private boolean chkJtf21() {
		try {
			String sjtf21 = this.jtf21.getText();
			if ("".equals(sjtf21)) {
				JOptionPane.showMessageDialog(null, "请选择保存的DML文件路径", "消息提示", JOptionPane.INFORMATION_MESSAGE);
				return false;
			}
			String dirPath = FileUtil.getFileNameExtension(sjtf21)[0];
			File file = new File(dirPath);
			if (!file.exists()) {
				file.mkdirs();
			}
		} catch (Exception e) {
			JOptionPane.showMessageDialog(null, "异常信息:" + e.getMessage(), "消息提示", JOptionPane.INFORMATION_MESSAGE);
			e.printStackTrace();
			return false;
		}
		return true;
	}

	private boolean chkJlb23() {
		ComboxItem item = (ComboxItem) select_jlb23.getSelectedItem();
		if ("".equals(item.value)) {
			JOptionPane.showMessageDialog(null, "请选择DB文件格式", "消息提示", JOptionPane.INFORMATION_MESSAGE);
			return false;
		}
		return true;
	}

	/**
	 * 默认true通过,false不通过
	 * 
	 * @return
	 */
	private boolean chkDB() {
		ComboxItem item = null;
		item = (ComboxItem) select_jlb1.getSelectedItem();
		// "请选择", "0:数据源导入", "1:DDL文件导入","2:DML文件导入","3:DDL文件导出","4:DML文件导出"
		if ("".equals(item.value)) {
			JOptionPane.showMessageDialog(null, "请选择操作类型", "消息提示", JOptionPane.INFORMATION_MESSAGE);
			return false;
		}
		if (Schema.TYPE_IMPORT_DDL.equals(item.value)) {
			if (!chkJtf6()) {
				return false;
			}
			item = (ComboxItem) select_jlb9.getSelectedItem();
			if ("".equals(item.value)) {
				JOptionPane.showMessageDialog(null, "请选择一种DDL操作", "消息提示", JOptionPane.INFORMATION_MESSAGE);
				return false;
			}
			if (!chkDB(Schema.TYPE_1)) {
				return false;
			}
		} else if (Schema.TYPE_IMPORT_DML.equals(item.value)) {
			if (!chkJtf20()) {
				return false;
			}
			item = (ComboxItem) select_jlb10.getSelectedItem();
			if ("".equals(item.value)) {
				JOptionPane.showMessageDialog(null, "请选择一种DML操作", "消息提示", JOptionPane.INFORMATION_MESSAGE);
				return false;
			}
			if (!chkDB(Schema.TYPE_1)) {
				return false;
			}
		} else if (Schema.TYPE_EXPORT_DDL.equals(item.value)) {
			if (!chkJtf18()) {
				return false;
			}
			if (!chkDB(Schema.TYPE_0)) {
				return false;
			}
		} else if (Schema.TYPE_EXPORT_DML.equals(item.value)) {
			if (!chkJtf21()) {
				return false;
			}
			if (!chkDB(Schema.TYPE_0)) {
				return false;
			}
		}
		if (!chkJlb23()) {
			return false;
		}
		return true;
	}

	private String getTablePatten(String type) {
		String tablePatten = "";
		if (Schema.TYPE_0.equals(type)) {
			if (otherFrameExport != null) {
				int[] rows = otherFrameExport.getTable().getSelectedRows();
				for (int row : rows) {
					if (tablePatten != null && !tablePatten.equals("")) {
						tablePatten += ",";
					}
					tablePatten += otherFrameExport.getTable().getValueAt(row, 0);
				}
				log.debug("选择的导出表:" + tablePatten);
			}
		} else if (Schema.TYPE_1.equals(type)) {
			if (otherFrameImport != null) {
				int[] rows = otherFrameImport.getTable().getSelectedRows();
				for (int row : rows) {
					if (tablePatten != null && !tablePatten.equals("")) {
						tablePatten += ",";
					}
					tablePatten += otherFrameImport.getTable().getValueAt(row, 0);
				}
				log.debug("选择的导入表:" + tablePatten);
			}
		}
		return tablePatten;
	}

	/**
	 * 点击开始执行
	 * 
	 * @author zhangjun
	 * 
	 */
	private class ExecCommondActionEvent implements ActionListener {
		public void actionPerformed(ActionEvent e) {
			String str = e.getActionCommand();
			JButton curBtn = (JButton) e.getSource();
			log.debug("otherFrameImport====" + otherFrameImport);
			log.debug("otherFrameExport====" + otherFrameExport);
			try {
				curBtn.setEnabled(false);
				if (execBtnText.equals(str)) {
					if (!chkDB()) {
						curBtn.setEnabled(true);
						return;
					}
					ComboxItem item = (ComboxItem) select_jlb1.getSelectedItem();
					ComboxItem itemjlb2 = (ComboxItem) select_jlb2.getSelectedItem();
					// "请选择", "0:数据源导入", "1:DDL文件导入","2:DML文件导入","3:DDL文件导出","4:DML文件导出"
					log.debug("选择的操作类型:" + item.text);
					Schema su = null;
					boolean jcb1Checked = jcb1.isEnabled() && jcb1.isSelected();
					boolean jcb2Checked = jcb2.isEnabled() && jcb2.isSelected();
					boolean jcb3Checked = jcb3.isEnabled() && jcb3.isSelected();
					if (Schema.TYPE_DDL_DML.equals(item.value)) {
						String fileName = new Date().getTime() + ".temp";
						String fileDir = System.getProperty("user.dir");
						if (!fileDir.endsWith(File.separator)) {
							fileDir += File.separator;
						}
						String impExpPath = fileDir + fileName;
						testDBConnection(btn1.getText());
						su = new Schema(conn, absDialect);
						su.ddlSql = jcb1Checked;
						su.dmlSql = jcb2Checked;
						su.dmlSqlMany = jcb3Checked;
						su.impExpPath = impExpPath;
						su.type = Schema.TYPE_EXPORT;
						su.tableNamePattern = getTablePatten(Schema.TYPE_EXPORT);
						su.absDialect.currentDbType=itemjlb2.value;
						su.absDialect.registerColumnType();
						su.absDialect.setSerializableDBInfo(su);
						su.exportTableValuesDML();

						testDBConnection(btn2.getText());
						su = new Schema(conn, absDialect);
						su.ddlSql = jcb1Checked;
						su.dmlSql = jcb2Checked;
						su.dmlSqlMany = jcb3Checked;
						su.impExpPath = impExpPath;
						su.type = Schema.TYPE_IMPORT;
						su.tableNamePattern = getTablePatten(Schema.TYPE_IMPORT);
						su.absDialect.currentDbType=itemjlb2.value;
						su.absDialect.registerColumnType();
						su.absDialect.setSerializableDBInfo(su);
						su.importDDL(Schema.DDL_TYPE_DROP_FK);
						su.importDDL(Schema.DDL_TYPE_DROP_IDX);
						su.importDDL(Schema.DDL_TYPE_DROP_TABLE);
						su.importDDL(Schema.DDL_TYPE_CREATE_TABLE);
						su.importDML(Schema.DML_TYPE_INSERT_TABLE);
						su.importDDL(Schema.DDL_TYPE_CREATE_FK);
						su.importDDL(Schema.DDL_TYPE_CREATE_IDX);
						su.importDDL(Schema.DDL_TYPE_CREATE_REMARK);
						// 删除临时文件
						File file = new File(impExpPath);
						if (file.exists()) {
							String filePath = file.getAbsolutePath();
							file.delete();
							log.debug("删除临时文件【" + filePath + "】成功");
						} else {
							log.debug("删除临时文件失败:临时文件不存在");
						}
					} else if (Schema.TYPE_IMPORT_DDL.equals(item.value)) {
						testDBConnection(btn2.getText());
						su = new Schema(conn, absDialect);
						su.ddlSql = jcb1Checked;
						su.dmlSql = jcb2Checked;
						su.dmlSqlMany = jcb3Checked;
						su.impExpPath = jtf6.getText();
						su.type = Schema.TYPE_IMPORT;
						su.tableNamePattern = getTablePatten(Schema.TYPE_IMPORT);
						su.absDialect.currentDbType=itemjlb2.value;
						su.absDialect.registerColumnType();
						su.absDialect.setSerializableDBInfo(su);
						item = (ComboxItem) select_jlb9.getSelectedItem();
						su.importDDL(item.value);
					} else if (Schema.TYPE_IMPORT_DML.equals(item.value)) {
						testDBConnection(btn2.getText());
						su = new Schema(conn, absDialect);
						su.ddlSql = jcb1Checked;
						su.dmlSql = jcb2Checked;
						su.dmlSqlMany = jcb3Checked;
						su.impExpPath = jtf20.getText();
						su.type = Schema.TYPE_IMPORT;
						su.tableNamePattern = getTablePatten(Schema.TYPE_IMPORT);
						su.absDialect.currentDbType=itemjlb2.value;
						su.absDialect.registerColumnType();
						su.absDialect.setSerializableDBInfo(su);
						item = (ComboxItem) select_jlb10.getSelectedItem();
						su.importDML(item.value);
					} else if (Schema.TYPE_EXPORT_DDL.equals(item.value)) {
						// 测试导出DDL
						testDBConnection(btn1.getText());
						su = new Schema(conn, absDialect);
						su.ddlSql = jcb1Checked;
						su.dmlSql = jcb2Checked;
						su.dmlSqlMany = jcb3Checked;
						su.impExpPath = jtf18.getText();
						su.type = Schema.TYPE_EXPORT;
						su.tableNamePattern = getTablePatten(Schema.TYPE_EXPORT);
						su.absDialect.currentDbType=itemjlb2.value;
						su.absDialect.registerColumnType();
						su.absDialect.setSerializableDBInfo(su);
						su.exportTableDDLSqls();
					} else if (Schema.TYPE_EXPORT_DML.equals(item.value)) {
						// 测试导出DML
						testDBConnection(btn1.getText());
						su = new Schema(conn, absDialect);
						su.ddlSql = jcb1Checked;
						su.dmlSql = jcb2Checked;
						su.dmlSqlMany = jcb3Checked;
						su.impExpPath = jtf21.getText();
						su.type = Schema.TYPE_EXPORT;
						su.tableNamePattern = getTablePatten(Schema.TYPE_EXPORT);
						su.absDialect.currentDbType=itemjlb2.value;
						su.absDialect.registerColumnType();
						su.absDialect.setSerializableDBInfo(su);
						su.exportTableValuesDML();
					}
					JOptionPane.showMessageDialog(null, "恭喜你!操作成功...", "消息提示", JOptionPane.INFORMATION_MESSAGE);
				} else if (closeBtnText.equals(str)) {
					exitConfirm();
				} else if (btn1Text.equals(str) || btn2Text.equals(str)) {
					if (btn1Text.equals(str)) {
						btn1.setEnabled(false);
					} else if (btn2Text.equals(str)) {
						btn2.setEnabled(false);
					}
					try {
						String msg = testDBConnection(str);
						JOptionPane.showMessageDialog(null, msg, "消息提示", JOptionPane.INFORMATION_MESSAGE);
					} catch (Exception e1) {
						e1.printStackTrace();
						JOptionPane.showMessageDialog(null, e1.getMessage(), "消息提示", JOptionPane.INFORMATION_MESSAGE);
					}
					if (btn1Text.equals(str)) {
						btn1.setEnabled(true);
					} else if (btn2Text.equals(str)) {
						btn2.setEnabled(true);
					}
				} else if ("打开*.DDL".equals(str)) {
					String rtnPath = openFile(0);
					if (rtnPath != null && !rtnPath.equals("")) {
						jtf6.setText(rtnPath);
					}
				} else if ("保存*.DDL".equals(str)) {
					String rtnPath = openFile(1);
					if (rtnPath != null && !rtnPath.equals("")) {
						jtf18.setText(rtnPath);
					}
				} else if ("打开*.DML".equals(str)) {
					String rtnPath = openFile(2);
					if (rtnPath != null && !rtnPath.equals("")) {
						jtf20.setText(rtnPath);
					}
				} else if ("保存*.DML".equals(str)) {
					String rtnPath = openFile(2);
					if (rtnPath != null && !rtnPath.equals("")) {
						jtf21.setText(rtnPath);
					}
				} else if (btn3Text.equals(str)) {
					testDBConnection(btn1.getText());
					Schema su = new Schema(conn, absDialect);
					su.type = Schema.TYPE_SEARCH_DB_TABLES;
					su.absDialect.setSerializableDBInfo(su);
					su.absDialect.impExpTableDDLSqls(su);
					if (su.serializableDBInfo.tableInfoLst == null || su.serializableDBInfo.tableInfoLst.size() == 0) {
						JOptionPane.showMessageDialog(null, "数据库没有任何表", "消息提示", JOptionPane.INFORMATION_MESSAGE);
						curBtn.setEnabled(true);
					} else {
						otherFrameExport = new DBTableFrame(su.serializableDBInfo.tableInfoLst, curBtn);
						otherFrameExport.setType(0);
						otherFrameExport.showMe();
					}
					return;
				} else if (btn4Text.equals(str)) {
					ComboxItem item = (ComboxItem) select_jlb1.getSelectedItem();
					String importPath = "";
					if (Schema.TYPE_IMPORT_DDL.equals(item.value)) {
						if (!chkJtf6()) {
							curBtn.setEnabled(true);
							return;
						}
						importPath = jtf6.getText();
					} else if (Schema.TYPE_IMPORT_DML.equals(item.value)) {
						if (!chkJtf20()) {
							curBtn.setEnabled(true);
							return;
						}
						importPath = jtf20.getText();
					}
					Schema su = new Schema();
					su.importPath = importPath;
					su.deserialization();
					if (su.serializableDBInfo.tableInfoLst == null || su.serializableDBInfo.tableInfoLst.size() == 0) {
						JOptionPane.showMessageDialog(null, "读取文件不存在任何表", "消息提示", JOptionPane.INFORMATION_MESSAGE);
						curBtn.setEnabled(true);
					} else {
						otherFrameImport = new DBTableFrame(su.serializableDBInfo.tableInfoLst, curBtn);
						otherFrameImport.setType(1);
						otherFrameImport.showMe();
					}
					return;
				}
			} catch (Exception e1) {
				e1.printStackTrace();
				JOptionPane.showMessageDialog(null, "执行失败:" + e1.getMessage(), "错误提示", JOptionPane.ERROR_MESSAGE);
			}
			curBtn.setEnabled(true);
		}
	}

	/** 查询表导入 **/
	private DBTableFrame otherFrameImport;
	/** 查询表导出 **/
	private DBTableFrame otherFrameExport;

	public DBTableFrame getOtherFrameImport() {
		return otherFrameImport;
	}

	public void setOtherFrameImport(DBTableFrame otherFrameImport) {
		this.otherFrameImport = otherFrameImport;
	}

	public DBTableFrame getOtherFrameExport() {
		return otherFrameExport;
	}

	public void setOtherFrameExport(DBTableFrame otherFrameExport) {
		this.otherFrameExport = otherFrameExport;
	}

	/**
	 * 退出程序
	 */
	private void exitConfirm() {
		int op = JOptionPane.showConfirmDialog(jframe, "确定要退出程序吗?", "提示", JOptionPane.YES_NO_OPTION);
		if (op == JOptionPane.YES_OPTION) {
			System.exit(0);
		}
	}

	/**
	 * 打开文件
	 * 
	 * @param type
	 *            :0[open-DDL],1[save-DDL],2[open-DML],3[save-DML]
	 * @return
	 */
	public String openFile(int type) {
		String rtnPath = "";
		JFileChooser chooser = null;
		Preferences pref = Preferences.userRoot().node(this.getClass().getName());
		String lastPath = pref.get("lastPath", "");
		if (!lastPath.equals("")) {
			chooser = new JFileChooser(lastPath);
		} else {
			chooser = new JFileChooser();
		}
		chooser.setAcceptAllFileFilterUsed(true);
		// chooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
		FileNameExtensionFilter filter1 = null;
		int returnVal = JFileChooser.ERROR_OPTION;
		String extension = "";
		if (type == 0) {
			filter1 = new FileNameExtensionFilter("*.ddl", "ddl");
			chooser.setFileFilter(filter1);
			chooser.setDialogTitle("导入DDL");
			returnVal = chooser.showOpenDialog(jframe.getFocusOwner());
			extension = ".ddl";
		} else if (type == 1) {
			filter1 = new FileNameExtensionFilter("*.ddl", "ddl");
			chooser.setFileFilter(filter1);
			chooser.setDialogTitle("导出DDL");
			returnVal = chooser.showSaveDialog(jframe.getFocusOwner());
			extension = ".ddl";
		} else if (type == 2) {
			filter1 = new FileNameExtensionFilter("*.dml", "dml");
			chooser.setFileFilter(filter1);
			chooser.setDialogTitle("导入DML");
			returnVal = chooser.showOpenDialog(jframe.getFocusOwner());
			extension = ".dml";
		} else if (type == 3) {
			filter1 = new FileNameExtensionFilter("*.dml", "dml");
			chooser.setFileFilter(filter1);
			chooser.setDialogTitle("导出DML");
			returnVal = chooser.showSaveDialog(jframe.getFocusOwner());
			extension = ".dml";
		}
		File chooseFile = null;
		if (returnVal == JFileChooser.APPROVE_OPTION) {
			chooseFile = chooser.getSelectedFile();
			rtnPath = chooseFile.getPath();
			// String des = chooser.getFileFilter().getDescription();
			// if (!"temp".equals(getFileExtension(rtnPath))) {
			// rtnPath += des.replaceFirst("\\*", "");
			// }
			log.debug("You chose  this file: " + rtnPath);
			if (chooseFile != null) {
				pref.put("lastPath", chooseFile.getPath());
			}
			if (!rtnPath.endsWith(extension)) {
				rtnPath += extension;
			}
			String[] names = FileUtil.getFileNameExtension(rtnPath);
			if (names != null && names.length > 2) {
				if ("".equals(names[1])) {
					rtnPath = (names[0] == null || names[0].equals("") ? "C:" : names[0]) + "zhangjun" + names[2];
				}
			}
		}

		return rtnPath;
	}

	public JComboBox getSelect_jlb1() {
		return select_jlb1;
	}

	public static SchemaFrameUtil thisFrame = null;

	/**
	 * 主程序
	 * 
	 * @param args
	 * @throws Exception
	 */
	public static void main(String[] args) throws Exception {
		thisFrame = new SchemaFrameUtil();
		thisFrame.setFrame();
		thisFrame.showMe();
	}
}

下载源码后直接部署到eclipse/myeclipse中即可使用


如需要获取源码,请先  

更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请请扫描上面二维码支持博主1元、2元、5元等您想捐的金额吧,狠狠点击下面给点支持吧

发表我的评论
最新评论 总共0条评论