java - 在带有 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();
}
我使用设计视图创建了数据库,所以我不知道如何显示代码。该数据库具有以下字段:
ID
(主键),PName
(搜索涉及的领域),PLevel
,PArea
,PType
,PWater
,PSun
.
VARCHAR
除了 之外PSun
,所有这些都是INTEGER
。
我现在要做的是获取用户输入的数据jTextField
(保存为字符串搜索),在数据库中搜索该数据,然后仅在表中显示用户输入的数据匹配的单个记录表中的某个字段称为PName
.
如果有什么太笼统,我深表歉意,这是我第一次使用这个网站。请尽量使用简单的解释,因为我对编程也比较陌生。任何帮助表示赞赏。
解决方案
到目前为止,我很欣赏这些答案,但是我已经对程序进行了很大的更改,以至于无法识别。
我犯的错误是试图在同一个程序中管理数据库和 GUI。我现在把程序分成两部分。有一个名为“Backend”的主类,它管理从数据库中读取数据。然后是另一个名为“GUI”的类,它处理从 Backend 类获取的信息的显示。
结果,该程序的许多功能都发生了变化。
推荐阅读
- r - 将作为函数输出的列表子集,而不将输出声明为变量
- c# - 如何在 PHP 文件中接收 json 数据?
- angular - 错误:运行时编译器未加载角度 SSR Google App Engine
- ios - 使用新数据更新领域文件
- c - 从链表中的“node *”分配给“int *”的不兼容指针类型
- data-warehouse - 在数据仓库中,度量应该基于事实还是维度?
- gdb - 如何防止 Eclipse CDT/GDB 中断信号(选择系统调用)?
- c - 为什么 puts() 在 C 中的输出上打印一些垃圾值
- c++ - [Boost].SML 通关参数
- android - 无法使用 exoplayer 解析方法 getUserAgent()