【问题标题】:how to search data in tableview from a database javafx [duplicate]如何从数据库javafx中搜索tableview中的数据[重复]
【发布时间】:2019-04-11 04:49:33
【问题描述】:
public void Search(ActionEvent event)
{
    try
    {
        Connection conn = SqliteConnection.Connector();
        PreparedStatement ps = conn.prepareStatement("SELECT FROM Studentlist WHERE ID LIKE ?% ");
        ps.setString(1, this.search.getText());

        ResultSet rs = conn.createStatement().executeQuery(String.valueOf(ps));
        while (rs.next())
        {
            this.data.add(new StudentData(rs.getString(1), rs.getString(2), rs.getString(3), rs.getString(4), rs.getString(5), rs.getString(6), rs.getString(7)));
        }
    }
    catch (SQLException e)
    {
        System.out.println(e);
    }
}

我正在尝试通过 tableview javafx gui 从数据库中按 id 搜索数据

我希望它返回以我在文本字段中输入的字母开头的所有数据

我通过我创建的类和方法连接数据库SqliteConnection.Connector(); 准备了一个字符串从搜索文本字段中获取值...this.data 是 observablelist 的名称.. 我的问题是我没有得到任何结果输入有效 ID 时的 tableview

【问题讨论】:

  • 使用数据库的查询类似于SELECT FROM Studentlist WHERE ID LIKE "input"%,这是不正确的SQL语法
  • 这被标记为重复,但它讨论了 tableview 中的可观察列表,我同意它讨论了在数据库中使用 like

标签: java sql javafx


【解决方案1】:

代替

ResultSet rs = conn.createStatement().executeQuery(String.valueOf(ps));

你想做的事

ResultSet rs =  ps.executeQuery();

【讨论】:

  • 我更改了'PreparedStatement ps = conn.prepareStatement("SELECT FROM Studentlist WHERE ID LIKE '?'%"); ps.setString(1, this.search.getText()); ResultSet rs = ps.executeQuery();但仍然没有显示搜索结果
  • 将 % 放入您的 setString 方法中,如下所示: ps.setString(1, this.search.getText()+"%");当然,从您的 prepareStatement 函数参数中删除 %。
猜你喜欢
  • 2016-02-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-10-28
  • 2016-11-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多