2017-10-30 16 views
0

これは新しいデータでテーブルを更新するために書かれましたが、次のコードを実行するとNULLポインタ例外が準備ステートメントに表示されます。誰かが私が間違っていた場所を見つけるのを助けることができます!java:Netbeansのwhere句を使用した更新ステートメント

String a= jTextField1.getText(); 
String b= jTextField2.getText(); 
String c= jTextField3.getText(); 
String d= jTextField4.getText(); 
String e= jTextField5.getText(); 
String f= jTextField6.getText(); 
String g= jTextField7.getText(); 
String i= jTextField8.getText(); 

try { 
String s2="update loginsys set 
appointtype='"+a+"',appointname='"+b+"',appointh='"+c+"', 
appointm='"+d+"',appointd='"+e+"',appointmo='"+f+"',appointy='"+g+"'where 
username='"+f+"';"; 

    PST=conn.prepareStatement(s2); 
    PST.setString(1,a); 
    PST.setString(2,b); 
    PST.setString(3,c); 
    PST.setString(4,d); 
    PST.setString(5,e); 
    PST.setString(6,f); 
    PST.setString(7,g); 
    PST.setString(8,f); 

RS=PST.executeQuery(); 
if(RS.next()){   
    JOptionPane.showMessageDialog(null, "Appointment was fixed"); 
    appointments.this.setVisible(false); 
    new list().setVisible(true);} 
    else 
     JOptionPane.showMessageDialog(null, "Appointment was not fixed"); 
+4

最初に戻って[Prepared Statementsの使用](https://docs.oracle.com/javase/tutorial/jdbc/basics/prepared.html)のチュートリアル – MadProgrammer

+0

T henは 'update loginsys set appointtype = ?, appointname = ?, appointh = ?, appointm = ?, appointd = ?, appointmo = ?, appointy =?のようなクエリ文字列を更新します。どこのユーザー名=? – MadProgrammer

+0

し、私たちが知っているすべてのために 'executeUpdate'を –

答えて

0

まず、executeUpdate代わりのexecuteQuery以上のようなupdate loginsys set appointtype=?,appointname=?,appointh=?,appointm=?,appointd=?,appointmo=?,appointy=? where username=?

第三に使用するクエリ文字列を更新し、戻ってUsing Prepared Statements

第二のチュートリアルを読んで - それは、行の数を返します。クエリによって更新されたクエリ

+0

これはNPEの原因ですか? –

+0

@ScaryWombatさらにコンテキストがなければ、NPEは 'conn'から来ていると思われます – MadProgrammer

関連する問題