2016-10-07 11 views
0

更新ボタンが押された場合、次のコードスニペットを実行する必要があります:注意:t1、t2 ,. 。 。、t8はJTextフィールドです。また、CUST_PHONEとADVはデータ型番号を受け取りますが、restはすべてvarcharです。
CUST_NAMEはプライマリキーです。JavaのJTextfieldsを使用してOracleデータベースにデータを更新する際の問題

theQuery("update gkkdb set CUST_ID='"+t1.getText()+"', CUST_PHONE="+t3.getText()+",CUST_CAT='"+t4.getText()+"',ST_DATE='"+t5.getText()+"',ADV="+t6.getText()+",END_DATE='"+t7.getText()+"',ADDR='"+t8.getText()+"' where CUST_NAME="+t2.getText()); 

theQuery次のように(文字列s)は関数である: -

public void theQuery(String query) 
{ 
Connection con = null; 
Statement st= null; 
try{ 
    DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver()); 
    con = DriverManager.getConnection("jdbc:oracle:thin:@Localhost:1521:xe","system","qwerty"); 
    System.out.println("Database connected"); 
    st= con.createStatement(); 
    st.executeUpdate(query); 
    JOptionPane.showMessageDialog(null,"Customer Updated!"); 
    } catch(Exception e) 
    { 
    JOptionPane.showMessageDialog(null,e.getMessage()); 
    } 
    } 

それとしてエラーを表示している:ORA-00904: "XXXX":無効な識別子、xxxxは私は任意CUST_NAMEでありますデータの更新に使用します。

答えて

2

すべての変数の値を表示して、データが含まれていることを確認しましたか?

カスタマーIDは文字列か整数か

いずれの場合も、エラーを防ぐためにSQLにはPreparedStatementを使用してください。

あなた始めるための簡単な例:

String sql = "UPDATE Page SET Title = ? WHERE Name = ?"; 

PreparedStatement stmt = connection.prepareStatement(sql); 

stmt.setString(1, textField1.getText()); 
stmt.setString(2, textField2.getText()); 
stmt.executeUpdate(); 
stmt.close(); 

私はあなたがアイデアを得る願っています。それぞれの "?"置き換えられ、構文について心配する必要はありません。読んで間違いを見つけやすくなりました。

+0

PreparedStatementを使用しています。ありがとうCamickr。 – AspiringCoderNeo

+0

と私はステートメントを使用している間に、日付入力が問題であると考えました。いくつかのフォーマットの問題がありました。しかし、今解決されています。 – AspiringCoderNeo

関連する問題