Соединение JDBC и ошибка тестирования - PullRequest
0 голосов
/ 24 ноября 2011

Я пытался запустить этот код, но он дал мне множество ошибок, и как я могу узнать свой собственный

 import javax.swing.JOptionPane;
import java.sql.*;
public class JdbcConnection{

    static String userid="root", password = "123192";
    static String url = "jdbc:mysql://localhost:3306/Testdb";   // String url = "jdbc:mySubprotocol:myDataSource"; ?
    static Statement stmt;
    static Connection con;
    public static void main(String args[]){

        JOptionPane.showMessageDialog(null,"JDBC Programming showing Creation of Table's");
        int choice = -1;

        do{
            choice = getChoice();
            if (choice != 0){
                getSelected(choice);
            }
        }
        while ( choice !=  0);
            System.exit(0);
    }

    public static int getChoice()
    {
        String choice;
        int ch;
        choice = JOptionPane.showInputDialog(null,
            "1. Create Employees Table\n"+
            "2. Create Products Table\n"+
            "0. Exit\n\n"+
            "Enter your choice");
        ch = Integer.parseInt(choice);
        return ch;

    }

    public static void getSelected(int choice){
        if(choice==1){
            createEmployees();
        }
        if(choice==2){
            createOrders();
        }
    }

    public static Connection getConnection()
    {



        try {
            Class.forName("com.mysql.jdbc.Driver"); //Class.forName("myDriver.ClassName"); ?

        } catch(java.lang.ClassNotFoundException e) {
            System.err.print("ClassNotFoundException: ");
            System.err.println(e.getMessage());
        }

        try {
            con = DriverManager.getConnection(url,
                                     userid, password);

        } catch(SQLException ex) {
            System.err.println("SQLException: " + ex.getMessage());
        }

        return con;
    }

    /*CREATE TABLE Employees (
            Employee_ID INTEGER,
            Name VARCHAR(30)
        );*/
    public static void createEmployees()
    {
        Connection con = getConnection();

        String createString;
        createString = "create table Employees (" +
                            "Employee_ID INTEGER, " +
                            "Name VARCHAR(30))";
        try {
            stmt = con.createStatement();
            stmt.executeUpdate(createString);
            stmt.close();
            con.close();

        } catch(SQLException ex) {
            System.err.println("SQLException: " + ex.getMessage());
        }
        JOptionPane.showMessageDialog(null,"Employees Table Created");
    }

    /*CREATE TABLE Orders (
            Prod_ID INTEGER,
            ProductName VARCHAR(20),
            Employee_ID INTEGER
        );*/

    public static void createOrders()
    {
        Connection con = getConnection();

        String createString;
        createString = "create table Orders (" +
                            "Prod_ID INTEGER, " +
                            "ProductName VARCHAR(20), "+
                            "Employee_ID INTEGER )";


        try {
            stmt = con.createStatement();
            stmt.executeUpdate(createString);

            stmt.close();
            con.close();

        } catch(SQLException ex) {
            System.err.println("SQLException: " + ex.getMessage());
        }
        JOptionPane.showMessageDialog(null,"Orders Table Created");
    }


}//End of class

, и у меня была эта ошибка

, когда я запустил эту программу, и явыбрав опцию № 1, он выдал мне эту ошибку

ClassNotFoundException: jdbc:mysql://localhost:3306/
SQLException: No database selected

после того, как я нажал «ОК», он выдал мне эту ошибку

Я использую MySQL, я скачал свой разъем / jустановить его classpath, h

C:\Program Files\Java\jdk1.6.0_24\bin;C:\Program Files\Java\jre6\lib\ext

Любая помощь?и как мне установить драйвер по умолчанию в helios затмения?РЕДАКТИРОВАТЬ:

Я обновил мой коде моя проблема сейчас заключается в следующем

Exception in thread "main" java.lang.NumberFormatException: null
    at java.lang.Integer.parseInt(Unknown Source)
    at java.lang.Integer.parseInt(Unknown Source)
    at JdbcConnection.getChoice(JdbcConnection.java:33)
    at JdbcConnection.main(JdbcConnection.java:15)

Ответы [ 2 ]

3 голосов
/ 24 ноября 2011

Это:

Class.forName("jdbc:mysql://localhost:3306/");

неправильно. Как и предполагалось в вашем комментарии к исходному коду, оно должно быть:

Class.forName("myDriver.ClassName");

И, используя mysql, это, вероятно, так:

Class.forName("com.mysql.jdbc.Driver");

Ваш url используется для создания соединения с:

con = DriverManager.getConnection(url, userid, password);

Class.forName загружает класс драйвера. Он не несет ответственности за установление соединения.

Кстати: Вы получаете две ошибки, потому что вы не выходите из своего метода на ClassNotFoundError, что является серьезной ошибкой, и ваш метод не должен быть допущен к дальнейшему выполнению.
Поэтому ваша программа будет выполняться дальше и выдаст вторую ошибку.

1 голос
/ 24 ноября 2011

Class.forName предназначен для загрузки драйвера класса

это должно быть что-то вроде этого

Class.forName("com.mysql.jdbc.Driver");  

и ваш URL должен быть таким

url ="jdbc:mysql://localhost:3306/yourDataBaseName"
...