Class 连接对象的转换异常
Class Cast Exception for Connection Object
我正在尝试为 MySQL 建立连接,但遇到了 class 转换异常。这是代码。密码、用户名等已更改,但这不是问题所在。主要问题是 Class Cast Exception 当我尝试做
Connection c = (Connection) DriverManager.getConnection(url,un,pw);
代码
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();
}
}
}
public class Connection
问题就在这里。 Class歧义问题。重命名您的 class,并修复您的导入以包含 java.sql.Connection.
DriverManager.getConnection(url,un,pw);
return一个java.sql.Connection
。
所以你必须改成
java.sql.Connection c = DriverManager.getConnection(url,un,pw);
return 值不是您的连接实例 class。
DriverManager.getConnection()
returns 的连接是 java.sql.Connection
的一个实例,但看到您定义了一个单独的连接 class 并认为它是唯一的。原来,它已经是java.sql.Connection
定义的标准class。
如果您对 Connection 使用导入,那么在具有相同名称的 classes 之间会发生冲突。将您的 class 重命名为 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();
}
}
}
我正在尝试为 MySQL 建立连接,但遇到了 class 转换异常。这是代码。密码、用户名等已更改,但这不是问题所在。主要问题是 Class Cast Exception 当我尝试做
Connection c = (Connection) DriverManager.getConnection(url,un,pw);
代码
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();
}
}
}
public class Connection
问题就在这里。 Class歧义问题。重命名您的 class,并修复您的导入以包含 java.sql.Connection.
DriverManager.getConnection(url,un,pw);
return一个java.sql.Connection
。
所以你必须改成
java.sql.Connection c = DriverManager.getConnection(url,un,pw);
return 值不是您的连接实例 class。
DriverManager.getConnection()
returns 的连接是 java.sql.Connection
的一个实例,但看到您定义了一个单独的连接 class 并认为它是唯一的。原来,它已经是java.sql.Connection
定义的标准class。
如果您对 Connection 使用导入,那么在具有相同名称的 classes 之间会发生冲突。将您的 class 重命名为 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();
}
}
}