gpt4 book ai didi

java - 在 Java SQLite 中执行查询时出现 SQLException

转载 作者:行者123 更新时间:2023-12-01 11:35:10 24 4
gpt4 key购买 nike

我的 NetBeans 项目中有这个类:

public class ConexionBD
{
private Connection conexion;
private Statement consulta;
private final String ruta;
private final String claseDriver;
private final String driver;

public ConexionBD(String ruta)
{
this.ruta = ruta;
this.claseDriver = "org.sqlite.JDBC";
this.driver = "jdbc:sqlite:";
}

public void conectar() throws SQLException, ClassNotFoundException
{
Class.forName(this.claseDriver);
this.conexion = DriverManager.getConnection(this.driver + this.ruta);
System.out.println("Opened database successfully");
this.consulta = this.conexion.createStatement();
System.out.println("Statement created successfully");
}

public ResultSet consultar(String sql) throws SQLException
{
ResultSet resultado = this.consulta.executeQuery(sql);
System.out.println(this.consulta.getConnection());
return resultado;
}
}

以及使用它的方法:

    private void buildTableView()
{
ConexionBD c = new ConexionBD(System.getProperty("user.dir") + "bbdd");
ObservableList<ObservableList> data FXCollections.observableArrayList();
System.out.println(System.getProperty("user.dir") + "\\bbdd");
try
{
c.conectar(); //WORKS FINE
}
catch(ClassNotFoundException | SQLException e)
{
Constantes.showAlert(AlertType.ERROR, "Error", "Error de base de datos", "Error de conexión");
}
try
{
String sql = "select name from controller";
ResultSet rs = c.consultar(sql); //THROWS SQLException

while(rs.next())
{
ObservableList<String> row = FXCollections.observableArrayList();
row.add(rs.getString(1));
data.add(row);
}
reguladores.setItems(data);
}
catch(SQLException e)
{
Constantes.showAlert(AlertType.ERROR, "Error", "Error de base de datos", "Error al obtener los datos");
}
try
{
c.cerrar();
}
catch (SQLException ex)
{
Constantes.showAlert(AlertType.ERROR, "Error", "Error de base de datos", "Error al cerrar la conexión");
}

连接方法似乎工作正常,但是当它执行调用“executeQuery(sql)”方法的方法时,它会抛出 SQLException。

我认为我配置了 jdbc 驱动程序、ojdbc 库和数据库,但我找不到该方法无法完成其工作的原因。有什么线索吗?

堆栈跟踪:

java.sql.SQLException: no such table: controller
at org.sqlite.DB.throwex(DB.java:288)
at org.sqlite.NestedDB.prepare(NestedDB.java:115)
at org.sqlite.DB.prepare(DB.java:114)
at org.sqlite.Stmt.executeQuery(Stmt.java:89)
at app.ConexionBD.consultar(ConexionBD.java:37)
at app.controllers.InicioController.buildTableView(InicioController.java:145)

数据库中确实存在该表

最佳答案

尝试完全限定您的表名称,例如 OWNER.TABLE_NAME

确保您连接的帐户具有表所有者授予的 SELECT 权限

这是我的两个明显的建议

暴力是检查所有表,如下所示:

    DatabaseMetaData md = connection.getMetaData();
ResultSet rs = md.getTables(null, null, "%", null);
while (rs.next()) {
System.out.println(rs.getString(3));
}

关于java - 在 Java SQLite 中执行查询时出现 SQLException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30074729/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com