5

我正在开发我的第一个基于桌面的 Java 项目。我实际上有 2 个问题

1) 如何对 JOptionPane.showMessageDialog 的 OK 按钮执行操作。我想导航到一个新的 Jframe,比如单击确定时的 x.java。

2)我有一个名为用户的表。该表有 8 列 userid (Primary Key)、name、password、emailid、dob、mobileno 、city、date。必须从 Jframe x 获取四个列条目,其余四个从其他 Jframe y 获取。

我写了以下代码

对于帧 X

PreparedStatement stm = con.prepareStatement("insert into user  

(userrid,name,password,emailid))values (?,?,?,?) ");

      stm.setString(1,id); // id is a public variable
      stm.setString(2,name);
      stm.setString(3,ps);
      stm.setString(4,email);
     stm.executeUpdate();

对于 Frame Y。(用户 ID 是主键)

public class Y extends javax.swing.JFrame
{  
    X o = new X(); // to access id variable from frame X

} 



PreparedStatement stm = con.prepareStatement(" update user set  dob ='? ', mobileno 
='?' ,city='?', date='?'  where userid= 'o.id' ");  

它不断为上述 sql 查询抛出异常

java.sql.SQLException:参数索引超出范围(1 > 参数个数,即 0)。

4

4 回答 4

16

1) 如何对 JOptionPane.showMessageDialog 的 OK 按钮执行操作。我想导航到一个新的 Jframe,比如单击确定时的 x.java。

int input = JOptionPane.showOptionDialog(null, "Hello World", "The title", JOptionPane.OK_CANCEL_OPTION, JOptionPane.INFORMATION_MESSAGE, null, null, null);

if(input == JOptionPane.OK_OPTION)
{
    // do something
}
于 2013-07-31T19:51:11.943 回答
1

它不断为上述 sql 查询抛出异常

java.sql.SQLException:参数索引超出范围(1 > 参数个数,即 0)。

那是因为您正在使用'?'in Update 语句并且'不需要。您应该像这样重写(假设您正确设置了参数):

PreparedStatement stm = con.prepareStatement("UPDATE user SET dob = ?, mobileno = ?, city = ?, date = ?  where userid= 'o.id' ");
于 2013-07-31T21:22:11.993 回答
0

showMessageDialog 不返回值,因此任何值都必须发生在不同的 JOptionPane 中。上述答案中的一个就是一个很好的例子。

添加到上述答案中,如果 int 输入等于 OK_OPTION,您可以在当前帧上调用 dispose()(如果您从一帧移动到下一帧而不保留原始帧),然后创建所需帧的新实例。

于 2013-07-31T19:56:47.583 回答
0

这是关闭我的java程序之前的代码,它可以工作。在no_option仍在运行的程序上,但您必须在以下位置设置框架的默认关闭操作:setDefaultCloseOperation( JFrame.DO_NOTHING_ON_CLOSE);

int dialogResult = JOptionPane.showConfirmDialog(frame, "Are you sure to close this window?", "Really Closing me?",JOptionPane.OK_CANCEL_OPTION);
            if (dialogResult==0){
                 frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                    try{
                    myDBExecuter.closeConnection();
                    myDBExecutero.closeConnection();
                    }catch(Exception e){
                        JOptionPane.showMessageDialog(null,new JTextField(" GoodBye :( "));
                    }
                     System.exit(0);
            }else contentPane.updateUI();//after else can you put what you want als alternative
于 2014-08-12T09:36:29.063 回答