编译错误不兼容类型:java.sql.Connection无法转换为Connection

时间:2016-11-26 12:28:01

标签: java sql sqlite jdbc

我们在学校有一个项目,我想使用SQLite。

我在互联网上做了一个教程,使用NetBeans将我连接到我的数据库并且它可以工作,但我的老师可能没有NB,所以我尝试在javac上编译它。 所以当我测试它时会出现。

 Connection.java:72: error: incompatible types: java.sql.Connection cannot be converted to Connection
                                conn = DriverManager.getConnection("jdbc:sqlite:test.db");
                                                                  ^
Connection.java:78: error: cannot find symbol
                        Statement stmt = conn.createStatement();
                                             ^
  symbol:   method createStatement()
  location: variable conn of type Connection
2 errors

所以我的代码在这里

        try {
            Connection conn = null;
            try {
                Class.forName("org.sqlite.JDBC");
                conn = DriverManager.getConnection("jdbc:sqlite:c:\sqlite\test.db");
            } catch ( Exception e ) {
                System.err.println( e.getClass().getName() + ": " + e.getMessage() );
                System.exit(0);
            }
            System.out.println("Opened database successfully");
            Statement stmt = conn.createStatement();
            // create a new table

            stmt.execute(sqldoc);
            stmt.execute(sqlaud);
            stmt.execute(sqlvid);
            stmt.execute(sqlliv);
            stmt.execute(sqlcli);
            stmt.execute(sqlemp);
        } catch (SQLException e) {
            System.out.println(e.getMessage());
        }

在另一个文件中,我还有一个错误,它涉及getMetaData()

我没有在互联网上查看此内容,但我找不到此错误的答案

1 个答案:

答案 0 :(得分:2)

鉴于错误位置(Connection.java:72),您创建的课程Connectionjava.sql.Connection冲突。

您需要更改代码以明确引用java.sql.Connection

java.sql.Connection conn = null;
try {
    Class.forName("org.sqlite.JDBC");
    conn = DriverManager.getConnection("jdbc:sqlite:c:\sqlite\test.db");
    // ...etc

或者您需要将自己的类Connection重命名为其他内容,因此如果您为该类添加导入,则不会与java.sql.Connection冲突。

第二个编译错误只是一个跟踪错误,原因相同,因为conn被定义为您自己的Connection类,它没有createStatement()方法。