连接对象的类转换异常

时间:2015-06-11 05:10:56

标签: java mysql jdbc

我正在尝试为MySQL建立连接,但我得到了一个类强制转换异常。这是代码。密码,用户名等已更改,但这不是问题。主要问题是我尝试

时得到的类强制转换异常
Connection c = (Connection) DriverManager.getConnection(url,un,pw);

CODE

import java.sql.DriverManager;
import java.sql.SQLException;


 public class Connection {
    public static void main(String agrs[]){
        try {
            Class.forName("com.mysql.jdbc.Driver");
            String url = "jdbc:mysql://hostname/dbname";
            String un = "username";
            String pw = "password";
            Connection c = (Connection)   DriverManager.getConnection(url,un,pw);
         } catch (ClassNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
}

3 个答案:

答案 0 :(得分:3)

public class Connection 

问题就在这里。类歧义问题。重命名您的类,并修复您的导入以包含java.sql.Connection.

答案 1 :(得分:2)

DriverManager.getConnection(url,un,pw);返回java.sql.Connection。 所以你必须改为

java.sql.Connection c = DriverManager.getConnection(url,un,pw);

返回值我不是Connection类的实例。

答案 2 :(得分:0)

DriverManager.getConnection()返回的连接是java.sql.Connection的实例,但是看到您已经定义了一个单独的Connection类,认为它是唯一的。事实证明,它已经是由java.sql.Connection定义的标准类。

如果对Connection使用导入,则具有相同名称的类之间将存在冲突。将您的班级重命名为MyConnection并import java.sql.Connection,然后您的代码就可以了。

import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Connection;

 public class MyConnection {
    public static void main(String agrs[]){
        try {
            Class.forName("com.mysql.jdbc.Driver");
            String url = "jdbc:mysql://hostname/dbname";
            String un = "username";
            String pw = "password";
            Connection c = (Connection)   DriverManager.getConnection(url,un,pw);
         } catch (ClassNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
}