首页 > 解决方案 > 在带有 JFrame 表单的 Netbeans derby 中使用带有 WHERE 子句的 SELECT 语句

问题描述

我制作了一个 JFrame 表单和一个数据库,该数据库将数据从 a 馈送jTable到 JFrame 表单的一个面板中。当用户在jTextField用作搜索栏的内容中键入内容时,SEARCH 查询会显示整个表,而不仅仅是特定记录。我不知道如何在代码中添加 WHERE 条件。

截至目前,用户可以在搜索栏中输入任何内容,按下搜索按钮并查看数据库中的所有信息。我尝试使用以下语句:

myDataObj = myStatObj.executeQuery ("Select* from Gabrielle.PlantData where PName = 'search'");

但这一切都只是一张空白表。

Connection myConObj = null;
Statement myStatObj = null;
ResultSet myDataObj = null;

public WikiPlantGUI() 
{
    initComponents();
    selectionAll();
}

/**
 * This method is called from within the constructor to initialize the form.
 * WARNING: Do NOT modify this code. The content of this method is always
 * regenerated by the Form Editor.
 */

public void selectionAll()
{
   try
   {
    myConObj= DriverManager.getConnection ("jdbc:derby://localhost:1527/InfoDB", "Gabrielle", "plants");
    myStatObj = myConObj.createStatement();
    myDataObj = myStatObj.executeQuery ("Select* from Gabrielle.PlantData where PName = 'search'");
    guiTable.setModel(DbUtils.resultSetToTableModel(myDataObj) );   
   }

   //Then there is some code that creates the JFrame form

    private void mainSearchbtnActionPerformed(java.awt.event.ActionEvent evt) {                                              
    boolean valid = true;
    String search = mainSearch.getText();

    if (search.length() ==0)
    {
        valid = false;
    }

    else
    {
        basePanel.removeAll();
        basePanel.add(dispPanel);
        basePanel.repaint();
        basePanel.revalidate(); 
    }

我使用设计视图创建了数据库,所以我不知道如何显示代码。该数据库具有以下字段:

  1. ID(主键),
  2. PName(搜索涉及的领域),
  3. PLevel,
  4. PArea,
  5. PType,
  6. PWater,
  7. PSun.

VARCHAR除了 之外PSun,所有这些都是INTEGER

我现在要做的是获取用户输入的数据jTextField(保存为字符串搜索),在数据库中搜索该数据,然后仅在表中显示用户输入的数据匹配的单个记录表中的某个字段称为PName.

如果有什么太笼统,我深表歉意,这是我第一次使用这个网站。请尽量使用简单的解释,因为我对编程也比较陌生。任何帮助表示赞赏。

标签: javasqlswingjdbcderby

解决方案


到目前为止,我很欣赏这些答案,但是我已经对程序进行了很大的更改,以至于无法识别。

我犯的错误是试图在同一个程序中管理数据库和 GUI。我现在把程序分成两部分。有一个名为“Backend”的主类,它管理从数据库中读取数据。然后是另一个名为“GUI”的类,它处理从 Backend 类获取的信息的显示。

结果,该程序的许多功能都发生了变化。


推荐阅读