2015-05-31 102 views
0

所以我想要做的是SQL - 爪哇 - UPDATE語句查詢

JButton GrantButton = new JButton("Grant Seller Access"); 
GrantButton.addActionListener(new ActionListener() { 
    public void actionPerformed(ActionEvent arg0) { 
     try { 
      String update_query = "UPDATE user SET usertype = 'seller' WHERE email = " & GrantField.getText()";" 
      //Here is where the error is stated on eclipse 

      PreparedStatement pSt = connect.prepareStatement(update_query); 
      pSt.setString(1, GrantField.getText()); 

      pSt.execute(); 

      JOptionPane.showMessageDialog(null, "The Request has been approved"); 

     } catch (Exception e) {        
      e.printStackTrace(); 
     }   
    } 
}); 
「中的‘用戶’表 WHERE電子郵件更新‘用戶類型’列從文本獲得(/用戶)值」

可以做到這一點嗎?

任何幫助將不勝感激。

+0

什麼錯誤得到?哪些dbms使用? SQL服務器? – Sachu

+0

'「&GrantField.getText()」;「'是無效的Java代碼。**和**你需要告訴我們什麼**完全**錯誤信息。你需要告訴我們你正在使用哪個DBMS –

回答

0

你的sql查詢有一些問題。

  1. 表名是User它是一個保留字,以便將其括在「」
  2. 您正在檢查郵件。它是VARCHAR,所以應該在'
  3. 務必附上嘗試使用參數化的SQL查詢,這將避免SQL注入問題
  4. 你正在做的SetString的值傳遞給查詢,但在查詢您 沒有指定地方該值應該被替換。

    String update_query ="UPDATE "user" SET usertype = 'seller' WHERE email = '" & GrantField.getText()&"';" PreparedStatement pSt = connect.prepareStatement(update_query); //pSt.setString(1, GrantField.getText()); this statement not needed because you are providing the value in query iteself pSt.execute();

OR

String update_query = "UPDATE [user] SET usertype = 'seller' WHERE email = ?" ; 
PreparedStatement pSt = dbConnection.prepareStatement(update_query); 
pSt.setString(1,GrantField.getText()); 
pSt.execute(); 
+0

你怎麼知道Minto正在使用Microsoft SQL Server?這個問題只用'sql'標記,所以答案應該使用標準的SQL。在SQL中,保留字需要用'''引用,所以它應該是''user''而不是'[user]' –

+0

@a_horse_with_no_name謝謝我編輯的隊友。 – Sachu

0

您的update_query不正確。您正在PreparedStatement上使用setString,但是您沒有指定將此值插入到查詢中的位置(您的查詢未被參數化)。指定你需要寫?你想插入價值的地方。用戶也是數據庫中的保留字,所以最好不要使用這個名字。例如:

String update_query = "UPDATE [table_name] SET usertype = seller WHERE email = ?" ; 
PreparedStatement preparedStatement = dbConnection.prepareStatement(update_query); 
preparedStatement.setString(1,Value);// this value will be replaced at ? 

如果你不知道如何從Java連接到數據庫,並創建連接,你需要從瞭解它:http://docs.oracle.com/javase/tutorial/jdbc/

+0

你怎麼知道Minto正在使用Microsoft SQL Server?這個問題只有'sql'標記,所以答案應該使用標準的SQL,而SQL保留字需要使用'''引用。所以它應該是''user''而不是'[user]' –

0

試圖用單引號像這樣的包裝您的文本框的值:

String update_query = "UPDATE user 
         SET usertype = 'seller' 
         WHERE email = '" & GrantField.getText() & "';" 

我在getText()後添加了&符號。

0

就修改這部分

String update_query = "UPDATE user SET usertype = 'seller' WHERE ***email = '" + GrantField.getText()+"';*** 

希望它可以爲你工作。