5

私は最初のデスクトップ ベースの Java プロジェクトに取り組んでいます。実は2つ質問があります

1) JOptionPane.showMessageDialog の [OK] ボタンでアクションを実行する方法。[OK] をクリックして x.java などの新しい Jframe に移動したい。

2) user という名前のテーブルがあります。このテーブルには、userid (主キー)、name、password、emailid、dob、mobileno、city、date の 8 つの列があります。4 つの列エントリを Jframe x からフェッチし、残りの 4 つを他の 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();

フレーム Y の場合 (userid は主キー)

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] ボタンでアクションを実行する方法。[OK] をクリックして x.java などの新しい Jframe に移動したい。

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)。

これは'?'、Update ステートメントで使用して'おり、必要がないためです。次のように書き直す必要があります (パラメータを適切に設定していると仮定して):

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

Javaプログラムを閉じる前のコードは次のとおりで、動作します。no_optionプログラムはまだ実行中ですが、フレームのデフォルトのクローズ操作を次のように設定する必要があります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 に答える
0

showMessageDialog は値を返さないため、別の JOptionPane で実行する必要があります。上記の回答のも​​のは良い例です。

上記の回答に加えて、int 入力が OK_OPTION に等しい場合、現在のフレームで dispose() を呼び出して (元のフレームを保持せずに次のフレームに移動する場合)、目的のフレームの新しいインスタンスを作成できます。

于 2013-07-31T19:56:47.583 に答える