0

这是代码:

       int value = JOptionPane.showConfirmDialog(Delete_Panel, "Delete Record of '"+rs.getString("Name")+"'", "Delete Now", JOptionPane.YES_NO_OPTION);

它什么都不做..但是当我删除rs.getString("Name")它时它工作得很好,但我还想在确认对话框中显示来自 ms 访问的名称,然后根据是 no 选项我希望执行我的进一步代码。

完整的源代码是:

       String input = txtDelete.getText();


        Connection connection;

        try {
            Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
            connection = DriverManager.getConnection("jdbc:odbc:NewPData");
            Statement st = connection.createStatement();
            ResultSet rs = st.executeQuery("select ID from Table1 where ID=" + input);

            if (!rs.next()) {
                JOptionPane.showMessageDialog(Delete_Panel, "ID does not exist");
            } else {

             // int value = JOptionPane.showConfirmDialog(Delete_Panel, "Delete Record of '"+rs.getString("Name")+"'", "Delete Now", JOptionPane.YES_NO_OPTION);

                st.executeUpdate("delete from Table1 where ID=" + input);
                JOptionPane.showMessageDialog(Delete_Panel, "Record is Deleted");
                connection.close();

            }
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (SQLException e) {
        }
    }
4

4 回答 4

1

尝试将代码放在 try-catch 块中,看看是否引发了异常。如果是,那么您必须处理它才能在 UI 中获取一些文本。

于 2012-12-04T10:23:14.773 回答
0

您是否考虑过创建一个临时字符串变量,并将其设置为 的输出rs.getString("Name"),然后在 JOptionPane 中显示该字符串?

于 2012-12-04T10:02:31.373 回答
0

是的,如前面的回答中所说,可能是 rs 为空或从未调用 rs.next() 或结果集中没有列“名称”,因此我们试图连接空名称。这样做有什么例外吗?最好将这个 rs.getString("Name") 值放在临时变量中,看看它是否真的是一个非空值。这是我能看到的唯一问题。

于 2012-12-04T10:11:28.280 回答
0

您的代码应该可以正常工作。请在对话框中发布确切的输出。

您是否尝试在调用 showConfirmDialog 之前先获取数据?

rs = Statement.executeQuery

编辑:

ResultSet rs = st.executeQuery("select ID from Table1 where ID=" + input);

Will only get the colum ID. Try this:

ResultSet rs = st.executeQuery("select ID,Name from Table1 where ID=" + input);

于 2012-12-04T10:11:52.023 回答