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

📄 configdbdlg.java

📁 用JAVA写的数据库程序,Oracle的JDBC驱动程序,SqlServer的JDBC驱动程序,配置数据库连接
💻 JAVA
字号:
package com.jimw.mysqlplus;

import java.io.*;

import java.util.HashMap;
import java.util.Iterator;
import java.util.Properties;

import java.awt.*;
import java.awt.event.*;

import javax.swing.*;

public class ConfigDBDlg extends JDialog {

    JList list;
    HashMap cfgMap;
    DefaultListModel listModel;
    private String[] dbType,dbDriver,defaultURL;

    public ConfigDBDlg(JFrame frame,String title,HashMap cfgMap) {
        super(frame, title, true);
        this.cfgMap = cfgMap;
        init();
        loadSystemProperties();
    }

    private void init() {

        //buttons
        final JButton testButton = new JButton("Test");
        final JButton addButton = new JButton("Add");
        final JButton modifyButton = new JButton("Modify");
        final JButton delButton = new JButton("Delete");
        testButton.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                testConnection();
            }
        });
        addButton.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                addNew();
            }
        });
        modifyButton.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                modifyDB();
            }
        });
        delButton.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                deleteDB();
            }
        });
        getRootPane().setDefaultButton(testButton);

        //main part of the dialog
        listModel = new DefaultListModel();
        Object[] key = cfgMap.keySet().toArray();
        for (int i=0; i<key.length; i++)
          listModel.addElement(key[i]);
        list = new JList(listModel);
        list.setSelectionMode(ListSelectionModel.SINGLE_INTERVAL_SELECTION);
        list.addMouseListener(new MouseAdapter() {
            public void mouseClicked(MouseEvent e) {
                if (e.getClickCount() == 2) {
                    modifyButton.doClick();
                }
            }
        });
        JScrollPane listScroller = new JScrollPane(list);
        listScroller.setPreferredSize(new Dimension(250, 80));

        listScroller.setMinimumSize(new Dimension(250, 80));
        listScroller.setAlignmentX(LEFT_ALIGNMENT);

        JPanel listPane = new JPanel();
        listPane.setLayout(new BoxLayout(listPane, BoxLayout.Y_AXIS));
        JLabel label = new JLabel("DB Alias:");
        label.setLabelFor(list);
        listPane.add(label);
        listPane.add(Box.createRigidArea(new Dimension(0,5)));
        listPane.add(listScroller);
        listPane.setBorder(BorderFactory.createEmptyBorder(10,10,10,10));

        //Lay out the buttons from left to right.
        JPanel buttonPane = new JPanel();
        buttonPane.setLayout(new BoxLayout(buttonPane, BoxLayout.X_AXIS));
        buttonPane.setBorder(BorderFactory.createEmptyBorder(0, 10, 10, 10));
        buttonPane.add(Box.createHorizontalGlue());
        buttonPane.add(testButton);
        buttonPane.add(Box.createRigidArea(new Dimension(10, 0)));
        buttonPane.add(addButton);
        buttonPane.add(Box.createRigidArea(new Dimension(10, 0)));
        buttonPane.add(modifyButton);
        buttonPane.add(Box.createRigidArea(new Dimension(10, 0)));
        buttonPane.add(delButton);

        //Put everything together, using the content pane's BorderLayout.
        Container contentPane = getContentPane();
        contentPane.add(listPane, BorderLayout.CENTER);
        contentPane.add(buttonPane, BorderLayout.SOUTH);

        pack();
    }

    private void testConnection() {
        String msg;
        int index = list.getSelectedIndex();
        if (index == -1)  return;

        Object key = list.getSelectedValue();
        CfgStru cfgStru = (CfgStru)cfgMap.get(key);

        JDBCAdapter dataBase = new JDBCAdapter(
            cfgStru.serverURL,
            cfgStru.driver,
            cfgStru.username,
            cfgStru.password);
        msg = "UserName:"+cfgStru.username+"\nPassword:"+cfgStru.password+
              "\nUrl:"+cfgStru.serverURL+"\n";
        if (dataBase.isOpen())
            msg = msg + "Test Success....";
        else
            msg = msg + "Test Failure...";
        JOptionPane.showMessageDialog(this,msg);
        try {
            dataBase.close();
        } catch (Exception ex) {
            ex.printStackTrace();
        }
        return;
    }

    private void addNew() {
        String[] ConnectOptionNames = { "Add","Cancel" };

        String url = defaultURL[0];//"jdbc:oracle:thin:@127.0.0.1:1521:MYORACLE";
        ModifyConfigDlg dlg = new ModifyConfigDlg(defaultURL[0],dbType[0]);
        dlg.init(dbType,dbDriver,defaultURL);

	if(JOptionPane.showOptionDialog(null, dlg, "Add a new DB connection",
		   JOptionPane.DEFAULT_OPTION, JOptionPane.INFORMATION_MESSAGE,
                   null, ConnectOptionNames, ConnectOptionNames[0]) == 0) {
            checkInputValue(dlg,null);
	}
    }

    private void modifyDB() {
        String[] ConnectOptionNames = { "Modify","Cancel" };

        int index = list.getSelectedIndex();
        if (index == -1)  return;
        Object key = list.getSelectedValue();
        CfgStru cfgStru = (CfgStru)cfgMap.get(key);
        ModifyConfigDlg dlg = new ModifyConfigDlg(cfgStru.username,cfgStru.password,
                                cfgStru.serverURL,cfgStru.driver,cfgStru.alias,
                                cfgStru.dbType);
        dlg.init(dbType,dbDriver,defaultURL);

	if(JOptionPane.showOptionDialog(null, dlg, "Modify the DB connection",
		   JOptionPane.DEFAULT_OPTION, JOptionPane.INFORMATION_MESSAGE,
                   null, ConnectOptionNames, ConnectOptionNames[0]) == 0) {
            checkInputValue(dlg,cfgStru.alias);
	}
    }

    private void deleteDB() {
        int index = list.getSelectedIndex();
        if (index == -1)  return;
        int result = JOptionPane.showConfirmDialog(this,
            "Are you sure delete this Database config?","Please confirm",JOptionPane.YES_NO_OPTION);
        if (result == 0) {//select YES
            cfgMap.remove(list.getSelectedValue());
            listModel.remove(index);
            writePropertiesFile();
        }
    }

    public void checkInputValue(ModifyConfigDlg dlg,String oldKey) {
            String username = dlg.getUserName();
            String password = dlg.getPassword();
            String url      = dlg.getURL();
            String driver   = dlg.getDriver();
            String alias    = dlg.getAlias();
            String dbType    = dlg.getDBType();
            alias = alias.toUpperCase();
            if ("".equals(username) || "".equals(password) ||
                "".equals(url) || "".equals(driver) ||
                "".equals(alias) ) {
                JOptionPane.showMessageDialog(this,"Error:Some filed is null!");
            } else {
                if (cfgMap.containsKey(alias) && !alias.equals(oldKey)) {
                    JOptionPane.showMessageDialog(this,"Error:The Alias is repeat!");
                    return;
                }
                if (oldKey != null) {//Modify config
                    cfgMap.remove(oldKey);
                    listModel.removeElement(oldKey);
                }
                CfgStru cfgStru = new CfgStru(alias,username,password,url,driver,dbType);
                cfgMap.put(alias,cfgStru);
                listModel.addElement(alias);
                writePropertiesFile();
            }
    }

    public void writePropertiesFile() {
        try {
        Properties props = new Properties();
        FileOutputStream out = new FileOutputStream("./cfg/config.properties");
        Iterator iterator = cfgMap.keySet().iterator();
        int num = 1;
        while (iterator.hasNext()) {
            String key = (String)iterator.next();
            CfgStru cfgStru = (CfgStru)cfgMap.get(key);
            props.setProperty("alias."+num,cfgStru.alias);
            props.setProperty("username."+num,cfgStru.username);
            props.setProperty("password."+num,cfgStru.password);
            props.setProperty("serverURL."+num,cfgStru.serverURL);
            props.setProperty("driver."+num,cfgStru.driver);
            props.setProperty("dbtype."+num,cfgStru.dbType);
            num++;
        }
        props.store(out,null);
        } catch (Exception ex) {
            ex.printStackTrace();
        }
    }

    private void loadSystemProperties() {
//dbtype.1=Oracle
//driver.1=oracle.jdbc.driver.OracleDriver
//defaulturl.1=jdbc\:oracle\:thin\:@127.0.0.1\:MYORACLE
      try {
   	  Properties props = new Properties();
          props.load( new java.io.FileInputStream("./cfg/system.properties"));

          int num = Integer.parseInt(props.getProperty("number"));
          dbType = new String[num];
          dbDriver = new String[num];
          defaultURL = new String[num];

          for(int i = 0; i < num; i++) {
              dbType[i]  = props.getProperty("dbtype."+(i+1));
              if (dbType[i] == null) break;
              dbDriver[i]  = props.getProperty("driver."+(i+1));
              defaultURL[i] = props.getProperty("defaulturl."+(i+1));
          }
      } catch (Exception ex) {
          ex.printStackTrace();
      }
    }

    public static void main(String[] args) {
        final JFrame frame = new JFrame("test");
        JButton btn = new JButton("show dlg");
        btn.addActionListener(new ActionListener(){
	                       public void actionPerformed(ActionEvent e) {
				   ConfigDBDlg dlg = new ConfigDBDlg(frame,"Config DB...",null);
                                   dlg.show();
                               }});
        frame.getContentPane().add(btn);
        frame.show();

    }
}

class ModifyConfigDlg extends JPanel implements ActionListener {

    private String alias,username,password,serverURL,driver,type;
    private String[] dbType,dbDriver,defaultURL;

    private JTextField  userNameField;
    private JTextField  passwordField;
    private JTextField  serverField;
    private JTextField  driverField;
    private JTextField  aliasField;
    private JComboBox   dbTypeList;

    ModifyConfigDlg(String url,String type) {
        this.serverURL = url;
        this.type = type;
    }

    ModifyConfigDlg(String username,String password,String url,
                    String driver,String alias,String type) {
        this.username = username;
        this.password = password;
        this.serverURL= url;
        this.driver   = driver;
        this.alias    = alias;
        this.type     = type;
    }

    public void init(String[] dbType,String[] dbDriver,String[] defaultURL) {
        this.dbType = dbType;
        this.dbDriver = dbDriver;
        this.defaultURL = defaultURL;
        createConnectionDialog();
        dbTypeList.setSelectedItem(type);
    }

    private void createConnectionDialog() {
	JLabel userNameLabel = new JLabel("User name: ", JLabel.RIGHT);
 	userNameField = new JTextField(username);

	JLabel passwordLabel = new JLabel("Password: ", JLabel.RIGHT);
	passwordField = new JTextField(password);

        JLabel serverLabel = new JLabel("Database URL: ", JLabel.RIGHT);
	serverField  = new JTextField(serverURL);

	JLabel driverLabel = new JLabel("Driver: ", JLabel.RIGHT);
	driverField = new JTextField(driver);

        JLabel aliasLabel = new JLabel("Database Alias: ", JLabel.RIGHT);
	aliasField  = new JTextField(alias);

        JLabel dbTypeLabel = new JLabel("DB Type: ", JLabel.RIGHT);
	dbTypeList  = new JComboBox(dbType);
        dbTypeList.addActionListener(this);

	this.setLayout(new BoxLayout(this,BoxLayout.X_AXIS));

	JPanel namePanel = new JPanel(false);
	namePanel.setLayout(new GridLayout(0, 1));
	namePanel.add(userNameLabel);
	namePanel.add(passwordLabel);
	namePanel.add(serverLabel);
	namePanel.add(driverLabel);
	namePanel.add(aliasLabel);
	namePanel.add(dbTypeLabel);

	JPanel fieldPanel = new JPanel(false);
	fieldPanel.setLayout(new GridLayout(0, 1));
	fieldPanel.add(userNameField);
	fieldPanel.add(passwordField);
	fieldPanel.add(serverField);
        fieldPanel.add(driverField);
        fieldPanel.add(aliasField);
        fieldPanel.add(dbTypeList);

	this.add(namePanel);
	this.add(fieldPanel);
    }

    public void actionPerformed(ActionEvent e) {
	JComboBox cb = (JComboBox)e.getSource();
	int index = cb.getSelectedIndex();
        if (index == -1) return;

        if ( cb.getSelectedItem().equals(type) ) {
            serverField.setText(serverURL);
        } else {
            serverField.setText(defaultURL[index]);
        }
        driverField.setText(dbDriver[index]);
    }

    public String getDBType() {
        return (String)dbTypeList.getSelectedItem();
    }

    public String getAlias() {
        return aliasField.getText().trim();
    }
    public String getURL() {
        return serverField.getText().trim();
    }
    public String getDriver() {
        return driverField.getText().trim();
    }
    public String getUserName() {
        return userNameField.getText().trim();
    }
    public String getPassword() {
        return passwordField.getText().trim();
    }
}

⌨️ 快捷键说明

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