ResultSet rs = s.executeQuery("SELECT BedID FROM '"+jComboBox1.getSelectedItem().toString()+"' WHERE = dischargedDate='-'");
我尝试了这段代码,当我将此代码更改为这样时,它就可以使用了;
ResultSet rs = s.executeQuery("SELECT BedID FROM 001_oncology WHERE = dischargedDate='-'");
我想通过我的第一个jcombobox选择表名。 001_oncology是我在数据库上的表名之一,excludedDate是001_oncology表的一列,BedID是表的主键
ResultSet rs = sexecuteQuery("SELECT table_name FROM information_schema.tables WHERE table_name LIKE '0%'");
我使用上面的代码将表名加载到我的第一个jacombobox
中任何人都应该尽快帮助我,请查看界面图像下方的图像,以便更好地理解。
我的第一个jcombo代码:
void loadCombo() {
// jComboBox1.addItem("");
try {
ResultSet rs = DB.getCon().createStatement().executeQuery("SELECT table_name FROM information_schema.tables WHERE table_name LIKE '0%'");
while (rs.next())
{
jComboBox1.addItem(rs.getString("table_Name"));
jTextField7.requestFocus();
} }
catch (Exception e) {
e.printStackTrace(); }
}
我的第二个jcombo的代码:
void loadCombo2() {
jComboBox2.addItem("");
try {
Connection c = DB.getCon();
Statement s = c.createStatement();
ResultSet rs = s.executeQuery("SELECT BedID FROM '"+jComboBox1.getSelectedItem().toString()+"' WHERE = dischargedDate='-'");
while (rs.next()) {
jComboBox2.addItem(rs.getString("BedID"));
} }
catch (Exception e) {
e.printStackTrace(); } }
答案 0 :(得分:1)
你得到什么错误?它会给你任何错误吗?
您的ResultSet SQL语句将生成以下错误的SQL语句(至少在Oracle中 - 不确定其他数据库)
SELECT BedID FROM '001_oncology' WHERE = dischargedDate='-'
您不应在表名上指定单引号。试试这个:
ResultSet rs = s.executeQuery("SELECT BedID FROM "+jComboBox1.getSelectedItem().toString()+" WHERE dischargedDate='-'");
答案 1 :(得分:0)
为了我的时间利益,我会改写你的一个组合框来使用预备语句,另一个将是相似的:
void loadCombo2() {
try {
Connection conn = DB.getCon();
PreparedStatement prepped = conn.prepareStatement("SELECT BedID FROM "+jComboBox1.getSelectedItem().toString()+" WHERE dischargedDate=?");
prepped.setString(1, "-");
ResultSet rs = prepped.executeQuery();
while (rs.next()) {
jComboBox2.addItem(rs.getString("BedID"));
}
} catch (SQLException e) {
e.printStackTrace();
}
}
这将阻止SQL Injection,并且是编写此类代码的更好方法。