创建DataBase使用Jframe,获取异常未知数据库选择

时间:2015-11-18 18:02:56

标签: java mysql eclipse swing jframe

import java.awt.*;
public class MainWindow {
private JFrame frmMainwindow;
private JTextField textField;
private JTextField textField_1;
private JTextField textField_2;
private JTextField textField_3;
private JTextField textField_4;
private JTextField textField_5;
private JTextField textField_6;
private JTextField textField_7;
private JTextField textField_8;

/**
 * Launch the application.
 */
public static void main(String[] args) {
    EventQueue.invokeLater(new Runnable() {
        public void run() {
            try {
                MainWindow window = new MainWindow();
                window.frmMainwindow.setVisible(true);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    });
}

/**
 * Create the application.
 * 
 */

Connection conn = null;
Connection conn1 = null;

public MainWindow() {
    initialize();
    MainPage mp = new MainPage();
    mp.setVisible(true);

}

/**
 * Initialize the contents of the frame.
 */
public void Reset(){
    textField.setText(null);
    textField_1.setText(null);
    textField_2.setText(null);
    textField_3.setText(null);
    textField_4.setText(null);
    textField_5.setText(null);
    textField_6.setText(null);
    textField_7.setText(null);
    textField_8.setText(null);
}

public void DBCreation(){
    conn = CreatingDb.CreateDb();
    String DBName = textField.getText();

    try{
        String query = "CREATE DATABASE " + DBName ;
        PreparedStatement pst = conn.prepareStatement(query);
        pst.executeUpdate();
        JOptionPane.showMessageDialog(null, "DB Created Successful.....");
        pst.close();

    }catch(Exception R){
        JOptionPane.showMessageDialog(null, R);
    }
}

public void Insert(){

     String DBName = textField.getText();
    conn1 = SqlConnection.InsertDB(DBName);


    try{
        String Table1 = "CREATE TABLE PERSONALINFO (PersonName VARCHAR(25),DoorNO VARCHAR(10),Street VARCHAR(25),Village VARCHAR(25),PhoneNo LONGINT(10),UserName VARCHAR(15),Password VARCHAR(10),Hint VARCHAR(50))";
         String Insert1 = "INSERT INTO PERSONALINFO (PersonName,DoorNO,Street,Village,PhoneNo,UserName,Password,Hint) VALUES (?,?,?,?,?,?,?,?)";

        PreparedStatement pstt = conn.prepareStatement(Table1);
        PreparedStatement psti = conn.prepareStatement(Insert1);

        psti.setString(1, textField_1.getText());
        psti.setString(2, textField_2.getText());
        psti.setString(3, textField_3.getText());
        psti.setString(4, textField_4.getText());
        psti.setString(5, textField_5.getText());
        psti.setString(6, textField_6.getText());
        psti.setString(7, textField_7.getText());
        psti.setString(8, textField_8.getText());

        pstt.execute();
        psti.execute();

        JOptionPane.showMessageDialog(null, "Table Created and Data Inserted Successfully....");
        psti.close();
        pstt.close();

    }catch(Exception R){
        JOptionPane.showMessageDialog(null, R);
    }
}

private void initialize() {
    frmMainwindow = new JFrame();
    frmMainwindow.getContentPane().setBackground(Color.WHITE);
    frmMainwindow.getContentPane().setFont(new Font("Times New Roman", Font.BOLD, 14));
    frmMainwindow.setTitle("Create DataBase");
    frmMainwindow.setBounds(100, 100, 668, 416);
    frmMainwindow.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
    Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
    int height = screenSize.height;
    int width = screenSize.width;
    frmMainwindow.setSize(width/2, height/2);

    // center the jframe on screen
    frmMainwindow.setLocationRelativeTo(null);
    frmMainwindow.getContentPane().setLayout(null);

    JPanel panel_1 = new JPanel();
    panel_1.setBackground(Color.WHITE);
    panel_1.setBounds(120, 70, 426, 205);
    frmMainwindow.getContentPane().add(panel_1);
    panel_1.setLayout(null);
    panel_1.setVisible(false);

    JLabel lblDatabaseName = new JLabel("DataBase Name");
    lblDatabaseName.setBounds(0, 3, 107, 14);
    panel_1.add(lblDatabaseName);
    lblDatabaseName.setFont(new Font("Times New Roman", Font.BOLD, 14));

    JLabel lblPersonName = new JLabel("Person Name");
    lblPersonName.setBounds(0, 32, 89, 14);
    panel_1.add(lblPersonName);
    lblPersonName.setFont(new Font("Times New Roman", Font.BOLD, 14));

    JLabel lblDoorNo = new JLabel("Door No");
    lblDoorNo.setBounds(0, 57, 79, 14);
    panel_1.add(lblDoorNo);
    lblDoorNo.setFont(new Font("Times New Roman", Font.BOLD, 14));

    JLabel lblStreet = new JLabel("Street");
    lblStreet.setBounds(0, 85, 46, 14);
    panel_1.add(lblStreet);
    lblStreet.setFont(new Font("Times New Roman", Font.BOLD, 14));

    JLabel lblVillage = new JLabel("Village");
    lblVillage.setBounds(0, 110, 46, 14);
    panel_1.add(lblVillage);
    lblVillage.setFont(new Font("Times New Roman", Font.BOLD, 14));

    JLabel lblPhoneNo = new JLabel("Phone No");
    lblPhoneNo.setBounds(0, 135, 58, 14);
    panel_1.add(lblPhoneNo);
    lblPhoneNo.setFont(new Font("Times New Roman", Font.BOLD, 14));

    JLabel lblUserbame = new JLabel("UserName");
    lblUserbame.setBounds(232, 3, 79, 14);
    panel_1.add(lblUserbame);
    lblUserbame.setFont(new Font("Times New Roman", Font.BOLD, 14));

    JLabel lblPassword = new JLabel("Password");
    lblPassword.setBounds(232, 32, 68, 14);
    panel_1.add(lblPassword);
    lblPassword.setFont(new Font("Times New Roman", Font.BOLD, 14));

    JLabel lblHint = new JLabel("Hint");
    lblHint.setBounds(232, 57, 46, 14);
    panel_1.add(lblHint);
    lblHint.setFont(new Font("Times New Roman", Font.BOLD, 14));

    textField = new JTextField();
    textField.setBounds(117, 0, 105, 20);
    panel_1.add(textField);
    textField.setFont(new Font("Times New Roman", Font.BOLD, 14));
    textField.setColumns(10);

    textField_1 = new JTextField();
    textField_1.setBounds(117, 29, 105, 20);
    panel_1.add(textField_1);
    textField_1.setFont(new Font("Times New Roman", Font.BOLD, 14));
    textField_1.setColumns(10);

    textField_2 = new JTextField();
    textField_2.setBounds(117, 54, 105, 20);
    panel_1.add(textField_2);
    textField_2.setFont(new Font("Times New Roman", Font.BOLD, 14));
    textField_2.setColumns(10);

    textField_3 = new JTextField();
    textField_3.setBounds(117, 82, 105, 20);
    panel_1.add(textField_3);
    textField_3.setFont(new Font("Times New Roman", Font.BOLD, 14));
    textField_3.setColumns(10);

    textField_4 = new JTextField();
    textField_4.setBounds(117, 107, 105, 20);
    panel_1.add(textField_4);
    textField_4.setFont(new Font("Times New Roman", Font.BOLD, 14));
    textField_4.setColumns(10);

    textField_5 = new JTextField();
    textField_5.setBounds(117, 132, 105, 20);
    panel_1.add(textField_5);
    textField_5.setFont(new Font("Times New Roman", Font.BOLD, 14));
    textField_5.setColumns(10);

    textField_6 = new JTextField();
    textField_6.setBounds(321, 0, 105, 20);
    panel_1.add(textField_6);
    textField_6.setFont(new Font("Times New Roman", Font.BOLD, 14));
    textField_6.setColumns(10);

    textField_7 = new JTextField();
    textField_7.setBounds(321, 29, 105, 20);
    panel_1.add(textField_7);
    textField_7.setFont(new Font("Times New Roman", Font.BOLD, 14));
    textField_7.setColumns(10);

    textField_8 = new JTextField();
    textField_8.setBounds(321, 54, 105, 20);
    panel_1.add(textField_8);
    textField_8.setFont(new Font("Times New Roman", Font.BOLD, 14));
    textField_8.setColumns(10);

    JButton btnReset = new JButton("Reset");
    btnReset.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent arg0) {
            Reset();
        }
    });
    btnReset.setBounds(232, 171, 89, 23);
    panel_1.add(btnReset);

    JButton btnSave = new JButton("Save");
    btnSave.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {
            DBCreation();
            Insert();
             Reset();
        }
    });

    btnSave.setBounds(327, 171, 89, 23);
    panel_1.add(btnSave);
    panel_1.setFocusTraversalPolicy(new FocusTraversalOnArray(new Component[]{lblDatabaseName, textField_1, lblPersonName, lblDoorNo, lblStreet, lblVillage, lblPhoneNo, lblUserbame, lblPassword, lblHint, textField_2, textField_3, textField_4, textField_5, textField_6, textField_7, textField_8, btnSave, btnReset, textField}));

    JPanel panel = new JPanel();
    panel.setBackground(Color.WHITE);
    panel.setBounds(217, 122, 233, 101);
    frmMainwindow.getContentPane().add(panel);
    panel.setLayout(null);

    JLabel lblCreateDatabase = new JLabel("Create DataBase");
    lblCreateDatabase.setBounds(0, 4, 120, 14);
    panel.add(lblCreateDatabase);
    lblCreateDatabase.setFont(new Font("Times New Roman", Font.BOLD, 14));

    JLabel lblOpenDatabase = new JLabel("Open DataBase");
    lblOpenDatabase.setBounds(0, 42, 120, 14);
    panel.add(lblOpenDatabase);
    lblOpenDatabase.setFont(new Font("Times New Roman", Font.BOLD, 14));

    JLabel lblNewLabel = new JLabel("Delete DataBase");
    lblNewLabel.setBounds(0, 82, 120, 14);
    panel.add(lblNewLabel);
    lblNewLabel.setFont(new Font("Times New Roman", Font.BOLD, 14));

    JButton btnNew = new JButton("New");
    btnNew.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent arg0) {
            panel.setVisible(false);
            panel_1.setVisible(true);
        }
    });
    btnNew.setBounds(144, 0, 89, 23);
    panel.add(btnNew);
    btnNew.setFont(new Font("Times New Roman", Font.BOLD, 14));

    JButton btnSelect = new JButton("Select");
    btnSelect.setBounds(144, 38, 89, 23);
    panel.add(btnSelect);
    btnSelect.setFont(new Font("Times New Roman", Font.BOLD, 14));

    JButton btnRemove = new JButton("Remove");
    btnRemove.setBounds(144, 78, 89, 23);
    panel.add(btnRemove);
    btnRemove.setFont(new Font("Times New Roman", Font.BOLD, 14));
}
}

我的第二个java文件

public class SqlConnection {

Connection conn1 = null;

public static Connection InsertDB(String DBName){
    String value = DBName;
    try{
        Class.forName("com.mysql.jdbc.Driver");
        String DB = "jdbc:mysql://localhost:3306/";
        Connection conn = DriverManager.getConnection(DB+value,"root","");
        JOptionPane.showMessageDialog(null,value);
        return conn;
    }catch(Exception e){
        JOptionPane.showMessageDialog(null,e);
        return null;
    }
}


}

我的第三个java文件

public class CreatingDb {

Connection conn = null;

public static Connection CreateDb(){
    try{
        Class.forName("com.mysql.jdbc.Driver");
        Connection conn = DriverManager.getConnection("jdbc:mysql://localhost/","root","");
        return conn;
    }catch(Exception e){
        JOptionPane.showMessageDialog(null,e);
        return null;
    }
}
}

MY Forth java File ..

public class MainPage extends JFrame {

private JPanel contentPane;

/**
 * Launch the application.
 */
public static void main(String[] args) {
    EventQueue.invokeLater(new Runnable() {
        public void run() {
            try {
                MainPage frame = new MainPage();
                frame.setVisible(true);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    });
}

/**
 * Create the frame.
 */
public MainPage() {
    setExtendedState(Frame.MAXIMIZED_BOTH);
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    setBounds(100, 100, 450, 300);

    JMenuBar menuBar = new JMenuBar();
    setJMenuBar(menuBar);

    JMenu mnFile = new JMenu("File");
    menuBar.add(mnFile);

    JMenuItem mntmNew = new JMenuItem("New");
    mnFile.add(mntmNew);

    JMenuItem mntmOpen = new JMenuItem("Open");
    mnFile.add(mntmOpen);

    JMenuItem mntmSave = new JMenuItem("Save");
    mnFile.add(mntmSave);

    JMenuItem mntmSaveAs = new JMenuItem("Save As...");
    mnFile.add(mntmSaveAs);

    JMenuItem mntmExit = new JMenuItem("Exit");
    mnFile.add(mntmExit);

    JMenu mnEdit = new JMenu("Edit");
    menuBar.add(mnEdit);

    JMenu mnHelp = new JMenu("Help");
    menuBar.add(mnHelp);
    contentPane = new JPanel();
    contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
    contentPane.setLayout(new BorderLayout(0, 0));
    setContentPane(contentPane);
}
}

我已导入所需的包裹...... 在上面的代码中,我在应用程序开始时使用textfield创建数据库。 DataBase已成功创建,但我无法访问创建的dataBase。它显示了java.sql.Exception:未知的数据库选择。 请任何人帮助我......

2 个答案:

答案 0 :(得分:0)

 String DB = "jdbc:mysql://localhost:3306/";
 Connection conn = DriverManager.getConnection(DB+value,"root","");

我认为你的问题是附加的。你不附加DB +值。给密码。

答案 1 :(得分:0)

MySQL manual说:

  

如果未指定数据库,则建立连接时不使用默认数据库。在这种情况下,要么在Connection实例上调用setCatalog()方法,要么在SQL中使用数据库名称(即SELECT dbname.tablename.colname FROM dbname.tablename ...)完全指定表名。在不指定要使用的数据库的情况下打开连接通常仅在构建使用多个数据库(例如GUI数据库管理器)的工具时才有用。

     

请注意

     

始终使用Connection.setCatalog()方法在JDBC应用程序中指定所需的数据库,而不是USE数据库语句。

如果你不打电话给setCatalog(),它没有说明会发生什么,但考虑到你的问题,我认为“没什么好处。”您应该在连接字符串中添加架构,或者调用setCatalog()