类型不匹配:无法从java.sql.statement转换为com.mysql.jdbc.Statement

时间:2017-10-29 02:28:25

标签: java mysql jdbc

这是我正在使用的代码,用于连接到mysql数据库。

我收到此错误:类型不匹配:无法从java.sql.statement转换为com.mysql.jdbc.Statement

行:Statement getData = con.createStatement(); //错误

我是否有课程加载问题?

//connect to database

import java.sql.Connection;
import java.sql.Driver;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Date;

import com.mysql.jdbc.Statement; 



public class dbconn {
    public static void main(String args[]) {

        String username = "username";
        String password = "password";
        String url = "jdbc:mysql://localhost:3306/Databasename";

        try {

        Class.forName("com.mysql.jdbc.Driver");
        Connection con=DriverManager.getConnection(url, username, password);
        Statement getData=con.createStatement(); //ERROR HERE
        ResultSet rs = getData.executeQuery("select * from MY_TABLE_NAME");
        while(rs.next())
            System.out.println(rs.getDate(1));
        con.close();

    }catch(Exception e) {System.out.println(e);}


    }


}

1 个答案:

答案 0 :(得分:0)

本声明:

 Statement getData = con.createStatement();

将无法编译,因为createStatement()的签名表示它返回java.sql.Statement。但您已导入com.mysql.jdbc.Statement,这意味着Statement 表示 com.mysql.jdbc.Statement

解决方案:

  1. 修复import声明(首选!!)。
  2. 将返回的值转换为Statement。这种方法很有效,但是你正在进行不必要的运行时类型检查(可能会失败!)如果你将JDBC驱动程序更改为其他供应商的话,代码中断。
  3. 课程:

    1. 不要盲目接受IDE对进口产品的建议/完成情况。它们可能不正确。
    2. 如果您自己设计API,请避免选择与Java SE类库中使用的类名称相同的类或接口名称。