当选择语句始终返回最后插入的值?

问题描述 投票:0回答:1

当我尝试使用准备好的语句选择记录时,它总是给我最近添加的最后一个插入值。 首先,我要做的是在我的第一张表中搜索记录。如果记录存在,则外键表将填充值。我的主要和外国钥匙桌效果很好。填充其相应组件的值适当地填充,但并没有给我正确的值。有帮助吗?

1st Table

这是引用外键表的主要钥匙表,这是第二个表。

2nd Table

选择查询:

String searchSECTIONNAME = "SELECT * FROM allsections_list WHERE SECTION_NAME = ?";//1st Select Statement String searchSECTIONSETTINGS = "SELECT allsections_list.`SECTION_ID`, allsections_settings.ADVISER_ASSIGNED, allsections_settings.SECTION_POPULIMIT,\n" + "allsections_settings.ROOM_ASSGN, allsections_settings.YRLEVEL_ASSGN, allsections_settings.SCHOOL_YEAR, allsections_settings.SESSION_ASSIGNED\n" + "FROM allsections_list\n" + "RIGHT JOIN allsections_settings\n" + "ON allsections_list.`SECTION_ID`=allsections_settings.`SECTION_ID`";//2nd Select Statement

那么,我在这里做了什么是使用

右JOIN

加入SECTION_NAME列到外键表。如果存在记录,它将加入两个表。
代码:

private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) { String searchSection = Section_SearchSection_Textfield.getText(); try (Connection myConn = DBUtil.connect(); PreparedStatement myFirstPs = myConn.prepareStatement(searchSECTIONNAME);) { myFirstPs.setString(1, searchSection); try (ResultSet myFirstRs = myFirstPs.executeQuery()) { int resultCounter = 0; while (myFirstRs.next()) { String mySectionName = myFirstRs.getString(2);//Get the value of SECTION_NAME Section_SectionName_TextField.setText(mySectionName); Section_SectionName_TextField.setEnabled(true); try (PreparedStatement mySecondPs = myConn.prepareStatement(searchSECTIONSETTINGS)) { try (ResultSet mySecondRs = mySecondPs.executeQuery()) { while (mySecondRs.next()) { String myAdviserAssigned = mySecondRs.getString(2); Section_Student_Limit_ComboBox1.setSelectedItem(myAdviserAssigned); Section_Student_Limit_ComboBox1.setEnabled(true); String mySectionPopulation = mySecondRs.getString(3); Section_Student_Limit_ComboBox.setSelectedItem(mySectionPopulation); Section_Student_Limit_ComboBox.setEnabled(true); String myRoomAssigned = mySecondRs.getString(4); Section_Room_Assignment_ComboBox.setSelectedItem(myRoomAssigned); Section_Room_Assignment_ComboBox.setEnabled(true); String myYearLevelAssigned = mySecondRs.getString(5); Section_Session_Level_ComboBox.setSelectedItem(myYearLevelAssigned); Section_Session_Level_ComboBox.setEnabled(true); String mySchoolYear = mySecondRs.getString(6); Section_SchooYear_ComboBox.setSelectedItem(mySchoolYear); Section_SchooYear_ComboBox.setEnabled(true); String mySessionAssigned = mySecondRs.getString(7); Section_Session_Settings_ComboBox.setSelectedItem(mySessionAssigned); Section_Session_Settings_ComboBox.setEnabled(true); resultCounter++; }//end of loop mySecondRs (ResultSet) }//end of try mySecondRs (ResultSet) }//end of try mySecondPs (PreparedStatement) }//end of loop myFirstRs (ResultSet) if (resultCounter == 1)//If exist { JOptionPane.showMessageDialog(null, "Data Found"); } else//If not exist JOptionPane.showMessageDialog(null, "No Data Found"); }//end of try myFirstRs (ResultSet) }//end of try myFirstPs (PreparedStatement) catch (SQLException e) { DBUtil.processException(e); }//end of catch }

您可以在这里看到。在我搜索现有的第一个
resultSet

myFirstRs

当现有的
SECTION_NAME
当外键值将填充。如果我的循环中的某些东西纠正了我。预先感谢!

update!

我在第二个选择查询中添加订单子句。因为没有这个数据库将返回所需的内容,因此我要做的就是修改查询并按照这样的子句添加订单:

String searchSECTIONSETTINGS = "SELECT allsections_list.`SECTION_ID`, allsections_settings.ADVISER_ASSIGNED, allsections_settings.SECTION_POPULIMIT,\n" +
    "allsections_settings.ROOM_ASSGN, allsections_settings.YRLEVEL_ASSGN, allsections_settings.SCHOOL_YEAR, allsections_settings.SESSION_ASSIGNED\n" +
    "FROM allsections_list\n" +
    "RIGHT JOIN allsections_settings\n" +
    "ON allsections_list.`SECTION_ID` = allsections_settings.`SECTION_ID`" +
    "ORDER BY allsections_list.SECTION_ID";

当我运行项目时,给我错误的价值观。我试图在Netbeans查询中运行此问题,并以ASC顺序给我一个值。

enter image description here

java jdbc prepared-statement resultset
1个回答
0
投票
我刚刚找到了最简单的解决方案。我使用正确的联接加入了两个表格。

private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) { String searchSection = Section_SearchSection_Textfield.getText().replace("!", "!!").replace("%", "!%").replace("_", "!_") .replace("[", "!["); String searchSECTIONSETTINGS = "SELECT allsections_list.SECTION_ID as 'ID', allsections_list.SECTION_NAME as 'Section Name', allsections_settings.ADVISER_ASSIGNED as 'Adviser', allsections_settings.SECTION_POPULIMIT as 'Population',\n" + "allsections_settings.ROOM_ASSGN as 'Room', allsections_settings.YRLEVEL_ASSGN as 'Year Level', allsections_settings.SCHOOL_YEAR as 'School Year', allsections_settings.SESSION_ASSIGNED as 'Session'\n" + "FROM allsections_list\n" + "RIGHT JOIN allsections_settings\n" + "ON allsections_list.SECTION_ID = allsections_settings.SECTION_ID\n" + "WHERE SECTION_NAME LIKE ? ESCAPE '!'\n" + "ORDER BY allsections_list.SECTION_ID"; if (searchSection.isEmpty()) { JOptionPane.showMessageDialog(null, "Please fill up this fields"); } else try (Connection myConn = DBUtil.connect(); PreparedStatement myFirstPs = myConn.prepareStatement(searchSECTIONSETTINGS);) { myFirstPs.setString(1, "%" +searchSection +"%"); try (ResultSet myFirstRs = myFirstPs.executeQuery()) { int resultCounter = 0; while (myFirstRs.next()) { String name = myFirstRs.getString(2); sectionJTable.setModel(DbUtils.resultSetToTableModel(myFirstRs)); resultCounter++; }//end of loop myFirstRs (ResultSet) if (resultCounter > 0)//If exist { JOptionPane.showMessageDialog(null, "Data Found"); } else//If not exist JOptionPane.showMessageDialog(null, "No Data Found"); }//end of try myFirstRs (ResultSet) }//end of try myFirstPs (PreparedStatement) catch (SQLException e) { DBUtil.processException(e); }//end of catch }

	
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.