2011-11-24 105 views
0

我试图运行该代码,但它给了我无数的错误,我怎么知道我自己的JDBC连接和测试错误

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,我已经把它的类路径中,H

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

任何帮助吗?以及如何在eclipse helios中设置默认驱动程序? 编辑:

现在我更新了我的codee我的问题是这样的

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) 

回答

3

此:

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,这是一个很大的错误,你的方法不应该被允许进一步执行。
因此,您的程序将进一步执行并抛出第二个错误。

+0

我怎么会知道我的驱动程序类名称?所有我知道的是,我下载connectorj添加它的路径和在java文件夹中 – user962206

+0

@ user962206您的驱动程序的制造商通常会告诉您如何配置/使用它与Java。只要看看文档/用户指南。每个数据库的驱动程序都不相同。对于你的msysql情况,com.mysql.jdbc.Driver肯定是对的。 – oers

+0

好吧,我完成了,但是Database_URL有什么用?最后我更新了我的问题,请检查 – user962206

1

的Class.forName是加载驱动程序类

它应该是这样的

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

和您的网址应该是这样的

url ="jdbc:mysql://localhost:3306/yourDataBaseName" 
+0

我还没有创建任何数据库 – user962206

+0

我不知道在cmd中键入查询 – user962206

+0

嗯,我认为你需要创建一个数据库,只有这样你才能获得Connection到那个数据库。如果您没有数据库,那么您如何才能连接到特定的数据库。 – gprathour