【问题标题】:JDBC Connection and testing errorJDBC连接和测试错误
【发布时间】:2011-11-24 09:16:44
【问题描述】:

我试图运行这段代码,但它给了我很多错误,我怎么知道我自己的

 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 中设置默认驱动程序? 编辑:

我更新了我的代码,我现在的问题是这样的

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)

【问题讨论】:

    标签: java mysql jdbc driver connector-j


    【解决方案1】:

    这个:

    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 上退出您的方法,这是一个非常严重的错误,您的方法不应被允许进一步执行。
    因此,您的程序将进一步执行并抛出第二个错误。

    【讨论】:

    • 我如何知道我的驱动程序类名?我所知道的是我下载了 connectorj 将它添加到路径和 java 文件夹中
    • @user962206 您的驱动程序的制造商通常会告诉您如何在 java 中配置/使用它。只需查看文档/用户指南。每个数据库的驱动程序都不同。对于您的 msysql 情况,com.mysql.jdbc.Driver 肯定是对的。
    • 好了,我说完了,但是Database_URL有什么用呢??最后我更新了我的问题,请检查
    • @user962206 该 URL 用于创建与 DriverManager.getConnection 的连接。您的新问题表明,选择中的值不能转换为整数。它可以包含字符。无论如何,如果您遇到新问题并在此处接受答案(如果任何答案有帮助),最好打开一个新问题。
    • 错误信息显示 java.lang.NumberFormatException: null ,这是因为 JOptionPane.showInputDialog 返回 null。这真的是一个完全不同的问题:)
    【解决方案2】:

    Class.forName 用于加载驱动类

    应该是这样的

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

    你的网址应该是这样的

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

    【讨论】:

    • 我还没有创建任何数据库
    • 我不知道在 cmd 中输入查询
    • 好吧,我认为您需要已经创建了一个数据库,然后才能连接到该数据库。如果您没有数据库,那么您如何连接到该特定数据库。
    • 你在创建表时没有选择任何数据库肯定会给你错误。在 MySql 中,您需要有一个数据库来创建表。
    • 好的,我已经修复了我的数据库 URL,我的驱动程序。现在我更新了我的问题,我的错误较少,请重新阅读我的代码以查找新错误,我更新了它
    猜你喜欢
    • 1970-01-01
    • 2015-06-12
    • 1970-01-01
    • 1970-01-01
    • 2015-09-26
    • 2014-04-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多