簡體   English   中英

用戶輸入的Java sql更新語句

[英]java sql update statement with user input

我從Java更新表格時遇到問題。

我需要檢查colmunID(從我的表PRODUCTS中)= int id(由用戶輸入給出),並將那張表中的產品價格更改為用戶給定的價格。

問題:

 static void x(int Userid, int Userprice) {
 ..........................................
   String sql = "UPDATE  Product set Price = Userprice where ID=Userid; ";
....}  

我收到我的數據庫中沒有Userprice或Userid列的錯誤。 我不知道如何編寫此代碼來檢查int用戶ID(在此方法中作為參數給出),而不是我的數據庫表中不存在的列。

假設您在DB中都有兩個具有Integer數據類型的列,

String sql = "UPDATE  Product set Price="+Userprice+" where ID="+Userid;

您沒有將實際值傳遞給它以及多余的';' 不需要。 另外,我建議您最好使用准備好的陳述,而不要采用上述方法

雖然您肯定在生產代碼中希望使用准備好的語句來防止sql注入,但是下面是一個簡單的解決方法。

String sql = String.format("UPDATE  Product set Price = %d where ID=%d ",Userprice,Userid);

字符串本身不會計算變量。

如果數據庫中不存在Userid表,則您將無法在SQL查詢中使用該表。 有兩個選項供您選擇:1.將Userid和Userprice作為變量傳遞給SQL查詢。

    String sql = "UPDATE  Product set Price = " + Userprice + "where ID=" + Userid+ "; "

或者2.在數據庫中創建表並在該表上進行聯接

    String sql = "Update A Set A.Price = b.Userprice FROM Product as A INNER JOIN User as b on A.Userid = b.ID;"
PreparedStatement ps = null;
Connection con = null;
try {
con = getConnection();
String sql = "UPDATE  Product set Price = ? where ID= ? ";          
            ps = con.prepareStatement(sql);         
            ps.setString(1, Userprice); 
            ps.setString(2, Userid); 
            int i = ps.executeUpdate();
            if (i > 0) { 
                System.out.println("Product Updated"); 
            } else {
                System.out.println("Error Occured");
            }

我認為這是您要尋找的東西...查詢中不應包含';' 在您的代碼的字符串中

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM