IntelliJ Java SQLException(未找到表),即使表存在

问题描述 投票:0回答:1

我正在学习java,已经开始学习数据库实现。我决定使用 SQLite,并且已经下载了 .jav 文件,将其放置在类路径中,并在命令提示符中使用它来创建一个包含两个表的数据库:dept 和 Students。 当我尝试在 java 中运行一些简单的代码时,我总是收到一个 SQLException 异常,说学生表不存在,尽管它确实存在。我已经多次检查路径和表格,但就是看不到问题。如果我不解决这个问题,我将无法继续学习 JDBC,因此它非常重要。这是代码:

import java.sql.*;

public class Main {
    public static void main(String[] args)  {
        try {
            Class.forName("org.sqlite.JDBC");
            Connection conn = DriverManager.getConnection("jdbc:sqlite:C://sqlite//univ");

            Statement stmt = conn.createStatement();

            ResultSet rs = stmt.executeQuery("select * from students");
            while (rs.next()) {
                System.out.print(rs.getInt("rollno") + " ");
                System.out.print(rs.getString("name") + " ");
                System.out.print(rs.getString("city") + " ");
                System.out.print(rs.getInt("deptno") + " ");
            }
            stmt.close();
            conn.close();
        } catch (SQLException e) {
            e.printStackTrace();
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
    }
}

这是错误:

org.sqlite.SQLiteException: [SQLITE_ERROR] SQL error or missing database (no such table: students)
    at org.sqlite.core.DB.newSQLException(DB.java:1179)
    at org.sqlite.core.DB.newSQLException(DB.java:1190)
    at org.sqlite.core.DB.throwex(DB.java:1150)
    at org.sqlite.core.NativeDB.prepare_utf8(Native Method)
    at org.sqlite.core.NativeDB.prepare(NativeDB.java:135)
    at org.sqlite.core.DB.prepare(DB.java:264)
    at org.sqlite.jdbc3.JDBC3Statement.lambda$executeQuery$1(JDBC3Statement.java:87)
    at org.sqlite.jdbc3.JDBC3Statement.withConnectionTimeout(JDBC3Statement.java:458)
    at org.sqlite.jdbc3.JDBC3Statement.executeQuery(JDBC3Statement.java:85)
    at Main.main(Main.java:13)

任何帮助将不胜感激。

java sql sqlite intellij-idea jdbc
1个回答
0
投票

所以问题实际上出在文件路径中,它指定了“univ”而不是“univ.db”。这让我很困惑,因为尽管出现了错误,但连接仍在建立,所以我在其他地方寻找问题。创建数据库时,它创建了 univ 和 univ.db,无论 univ 是什么,它都没有我创建的表。

conn = DriverManager.getConnection("jdbc:sqlite:C:/sqlite/univ.db");
© www.soinside.com 2019 - 2024. All rights reserved.