package cn.vociecodes.demo;

import org.apache.ibatis.io.Resources;
import org.apache.ibatis.jdbc.ScriptRunner;

import java.awt.BorderLayout;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.IOException;
import java.sql.SQLException;

import javax.swing.DefaultComboBoxModel;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JDialog;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JPasswordField;
import javax.swing.JTextField;
import javax.swing.SwingConstants;
import javax.swing.border.EmptyBorder;



class DBForm extends JDialog {

	private static final long serialVersionUID = 1L;
	private final JPanel contentPanel = new JPanel();
	private JTextField url;
	private JTextField port;
	private JTextField userName;
	private JPasswordField password;
	private JTextField databaseName;
	private JComboBox<String> databaseType;
	private JButton okButton;
	private JButton testButton;
	private Database DBdatabase;
	Database db = new Database();

	public DBForm() {
		//标题
		setTitle("Database");
		setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
		setBounds(500, 200, 389, 380);
		getContentPane().setLayout(new BorderLayout());
		contentPanel.setBorder(new EmptyBorder(5, 5, 5, 5));
		getContentPane().add(contentPanel, BorderLayout.CENTER);
		contentPanel.setLayout(null);

		//名称
		JLabel lblNewLabel = new JLabel("DatabaseSet");
		lblNewLabel.setFont(new Font("宋体", Font.PLAIN, 14));
		lblNewLabel.setHorizontalAlignment(SwingConstants.CENTER);
		lblNewLabel.setBounds(114, 10, 108, 15);
		contentPanel.add(lblNewLabel);

		//选择数据库类型
		JLabel lblDatabasetype = new JLabel("DatabaseType");
		lblDatabasetype.setHorizontalAlignment(SwingConstants.CENTER);
		lblDatabasetype.setBounds(64, 42, 82, 15);
		contentPanel.add(lblDatabasetype);

		databaseType = new JComboBox<String>();
		databaseType.setModel(new DefaultComboBoxModel<String>(new String[] { "MySql","SQLServer","Oracle"}));
		databaseType.setBounds(181, 53, 108, 21);
		contentPanel.add(databaseType);

		//设置URL
		JLabel jLabelUrl = new JLabel("IP");
		jLabelUrl.setHorizontalAlignment(SwingConstants.CENTER);
		jLabelUrl.setBounds(64, 95, 82, 15);
		contentPanel.add(jLabelUrl);

		url = new JTextField();
		url.setBounds(181, 93, 108, 21);
		contentPanel.add(url);

		//设置端口号
		JLabel jLabelPort = new JLabel("Port");
		jLabelPort.setHorizontalAlignment(SwingConstants.CENTER);
		jLabelPort.setBounds(64, 135, 82, 15);
		contentPanel.add(jLabelPort);

		port = new JTextField();
		port.setBounds(181, 130, 108, 21);
		contentPanel.add(port);

		//设置用户名
		JLabel lblUsername = new JLabel("UserName");
		lblUsername.setHorizontalAlignment(SwingConstants.CENTER);
		lblUsername.setBounds(64, 175, 82, 15);
		contentPanel.add(lblUsername);

		userName = new JTextField();
		userName.setBounds(181, 170, 108, 21);
		contentPanel.add(userName);
		userName.setColumns(10);

		//设置密码
		JLabel lblPassword = new JLabel("Password");
		lblPassword.setHorizontalAlignment(SwingConstants.CENTER);
		lblPassword.setBounds(64, 215, 82, 15);
		contentPanel.add(lblPassword);

		password = new JPasswordField();
		password.setBounds(181, 208, 108, 21);
		contentPanel.add(password);

		//数据库名称
		JLabel lblNewLabel_1 = new JLabel("Database");
		lblNewLabel_1.setHorizontalAlignment(SwingConstants.CENTER);
		lblNewLabel_1.setBounds(44, 255, 118, 15);
		contentPanel.add(lblNewLabel_1);

		databaseName = new JTextField();
		databaseName.setBounds(181, 252, 108, 21);
		contentPanel.add(databaseName);

		//确定键
		okButton = new JButton("OK");
		okButton.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
				//初始默认数据库设置完成,接下来创建新的数据库并创建表初始化
				//创建连接对象
				DBdatabase = getDatabase();
				String dBName = DBdatabase.getName();
				try {
					ConnectDatabase conn = new ConnectDatabase(DBdatabase);
					if ((databaseType.getSelectedItem().toString().trim()).equals("MySql")) {

						ScriptRunner runner = new ScriptRunner(conn.getConn());
						runner.runScript(Resources.getResourceAsReader("SQL/student.sql"));

					}else if ((databaseType.getSelectedItem().toString().trim()).equals("SQLServer")) {

					}else if ((databaseType.getSelectedItem().toString().trim()).equals("Oracle")) {

					}

					conn.getState().close();
					conn.getConn().close();
					DBdatabase.setName(dBName);
					XMLReader xr = new XMLReader();
					xr.setXML(DBdatabase);
					JOptionPane.showMessageDialog(okButton, "数据库初始化成功!!!");
					dispose();
					System.out.println("数据库配置成功进入应用系统!!!");
				} catch (SQLException e) {
					JOptionPane.showMessageDialog(okButton, "数据库初始化失败!!!"+e);
					e.printStackTrace();
				} catch (IOException e) {
					JOptionPane.showMessageDialog(okButton, "数据库脚本读取失败!!!"+e);
					e.printStackTrace();
				}
			}
		});
		okButton.setBounds(71, 294, 93, 23);
		contentPanel.add(okButton);

		//测试按钮
		testButton = new JButton("Test");
		testButton.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				DBdatabase = getDatabase();
				String dbName = DBdatabase.getName();
				ConnectDatabase conn = new ConnectDatabase(DBdatabase);
				if(conn.getConn()!=null){
					okButton.setVisible(true);
					JOptionPane.showMessageDialog(testButton, "Test Successed!!!");
					DBdatabase.setName(dbName);
				}
				else{
					JOptionPane.showMessageDialog(testButton, "Test Failed!!!");
				}
			}
		});
		testButton.setBounds(191, 294, 93, 23);
		contentPanel.add(testButton);


		this.setVisible(true);

	}
	@SuppressWarnings({ "static-access", "deprecation" })
	public Database getDatabase(){

		String dbType = databaseType.getSelectedItem().toString().trim();
		String dburl = url.getText().trim();
		String dbport = port.getText().trim();
		String dbUser = userName.getText().trim();
		String dbPassword = password.getText().trim();
		String dbName = databaseName.getText().trim();
		if(dbType==null|dbUser==null|dbPassword==null|dbName==null){
			new JOptionPane().showMessageDialog(okButton, "请完善数据库信息!!!");;
		}
		else{
			if(dbType.equals("MySql")){
				db.setType(dbType);
				db.setDriver("com.mysql.jdbc.Driver");
				db.setUri(dburl);
				db.setPort(dbport);
				db.setUser(dbUser);
				db.setPassword(dbPassword);
				db.setName(dbName);
			}
			if(dbType.equals("SQLServer"))  {
				db.setType(dbType);
				db.setDriver("com.microsoft.sqlserver.jdbc.SQLServerDriver");
				db.setUri(dburl);
				db.setPort(dbport);
				db.setUser(dbUser);
				db.setPassword(dbPassword);
				db.setName(dbName);
			}
			if(dbType.equals("Oracle")){
				db.setType(dbType);
				db.setDriver("oracle.jdbc.driver.OracleDriver");
				db.setUri(dburl);
				db.setPort(dbport);
				db.setUser(dbUser);
				db.setPassword(dbPassword);
				db.setName(dbName);
			}
		}
		return db;
	}

}
最近下载更多
jacklon  LV18 3月25日
magnolia  LV1 2020年11月3日
liang20223141  LV1 2020年9月10日
cardhu  LV4 2020年6月4日
gw0207  LV13 2020年5月13日
pengkai  LV5 2019年9月16日
m719067455  LV20 2019年4月8日
dlz839701573  LV1 2018年6月23日
charlesuncle  LV8 2017年12月24日
mzoai  LV19 2017年8月4日
最近浏览更多
jacklon  LV18 3月25日
刘先生-OL  LV13 2022年11月6日
nurmamat001  LV2 2022年11月1日
woaikaikai  LV2 2022年10月26日
chaos123 2022年10月1日
暂无贡献等级
ROG全家桶 2022年8月9日
暂无贡献等级
是你爸爸啊100  LV5 2022年8月8日
Hachi6  LV13 2022年6月29日
xiaoyinuoliyunhao  LV9 2022年6月22日
cxdxfx12  LV14 2022年6月19日
顶部 客服 微信二维码 底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友