当前位置: 首页 > 知识库问答 >
问题:

在Java SQLite中执行查询的SQLException

芮叶秋
2023-03-14
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");
       }

connection方法似乎工作得很好,但当它执行调用“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)

共有1个答案

罗渝
2023-03-14

尝试完全限定您的表名,如owner.table_name

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

这是我的两个明显的建议

    DatabaseMetaData md = connection.getMetaData();
    ResultSet rs = md.getTables(null, null, "%", null);
    while (rs.next()) {
      System.out.println(rs.getString(3));
    }
 类似资料:
  • 大家好,我在joomla 2.5中为后端做了一个组件,但是我在执行sql查询时遇到了问题,我的变量是空的,所以它不会显示任何内容。 我有其他的文件和文件,但这里对我的问题很重要。 首先在我的controller.php我有这个内部管理文件 在我的模型文件我有restaurante.php 在我的控制器文件里我有这个 最后,在我的视图文件中,我有一个默认的tmpl文件。显示表格的php 但是元素re

  • 一旦你建立好数据模型之后,django会自动生成一套数据库抽象的API,可以让你执行增删改查的操作。这篇文档阐述了如何使用这些API。关于所有模型检索选项的详细内容,请见数据模型参考。 在整个文档(以及参考)中,我们会大量使用下面的模型,它构成了一个博客应用。 from django.db import models class Blog(models.Model): name = mo

  • 问题内容: 我想通过调用CouchDB查询特定文档的列表。 使用SQL,我会做类似的事情 在CouchDB中按一个字段或另一个字段执行此操作的诀窍是什么? 问题答案: 您需要使用views查询参数来获取具有指定集中键的记录。 接着 要同时检索文档内容,只需将查询参数添加到您的请求中。 UPD :也许您可能有兴趣通过此参考ID(2,4,56)来检索文档。默认情况下,CouchDB视图使用它们所属的文

  • 问题内容: 我有5个单独的SQL查询,这些查询按顺序在控制器操作中执行。这是我用来执行它们的方法: 因此,基本上我有五个连续的查询,这些查询必须按顺序执行,并且代码必须在它们下面继续执行。有没有更好的方法可以从控制器操作内部执行查询?我不确定使用当前方法进行错误处理的最佳方法。 谢谢! 问题答案: 首先看在控制器和数据库之间创建一个抽象层。存储库就是一个例子,它会在您进行测试时提供帮助。您可以创建

  • 在我的项目中,为了验证某个字段,我需要在spring批处理程序中执行一个查询。我怎么能这么做?谢谢! ---添加信息---这是步骤的定义 } 这是我的作家

  • 我的桌子描述是 我的疑问是 如何使用hibernate执行此查询。Hibernate应该返回类型为的对象列表。?