Swing方式建立数据库

导出jar之后运行截图





主要代码:

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;
	}

}

完整代码: 下载

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值