2014-11-02 67 views
0

首先,如果我做了任何語法錯誤,我的母語不是英語。 這裏即時打印出數據庫中的所有客戶,併爲每個錶行添加刪除鏈接,以客戶代碼作爲參數。當點擊鏈接時,它應該刪除一行,但它會刪除所有具有相同代碼的客戶,任何想法如何刪除只有一行,即使有客戶使用相同的代碼?刪除循環中的單個表格

for(Customers customer : customers) 
    { 
     String param = customer.getCode(); 
     request.setAttribute("value3",param); 

     out.println(

    "<tbody><tr> " 
    + "<td>"+ customer.getFirst_name()+" "+"</td>" 
    + "<td>"+ customer.getSurname()+" "+"</td>" 
    + "<td>"+ customer.getCode()+" " +"</td></br>" 
    + " "+"<td><a href='"+request.getContextPath()+"/Search?id="+param+"'>Delete</a></td></tr>" 

    );  

    dao.deleteCustomer(request.getParameter("id")); 

    } 

方法delete一個:

public void deleteCustomer(String code) 
{ 
    try{ 
     pst = getConnection().prepareStatement("delete from customer where " 
    +" code = '"+code +"'"); 

     pst.executeUpdate();   

    }catch(Exception e) 
    { 

     throw new RuntimeException(e); 
    } finally { 

     closeResources(); 
    } 


} 

模式文件:

CREATE SEQUENCE seq1 AS INTEGER START WITH 1; 

CREATE TABLE customer (
    id BIGINT NOT NULL PRIMARY KEY, 
    first_name VARCHAR(255) NOT NULL, 
    surname VARCHAR(255) NOT NULL, 
    code VARCHAR(255) NOT NULL, 
); 

INSERT INTO customer VALUES(NEXT VALUE FOR seq1,'Jane','Doe','123'); 
INSERT INTO customer VALUES(NEXT VALUE FOR seq1,'John','Doe','456'); 
INSERT INTO customer VALUES(NEXT VALUE FOR seq1,'Jack','Smith','789'); 
+0

所以客戶有沒有獨特的ID?你怎麼能知道你沒有一個唯一的ID刪除哪個客戶? – 2014-11-02 13:11:15

+0

使用'限制1',您只能刪除一條記錄。但我認爲你應該考慮@SalihErikci提出的問題。 – linuxlsx 2014-11-02 13:23:08

回答

0

嘗試:

pst = getConnection().prepareStatement("DELETE FROM customer WHERE code = '"+ code + "' and id IN (select * from (SELECT MAX(c.id) FROM customer c where code = '"+ code + "') as d)"); 
+0

即時通訊使用hsqldb,它沒有幫助,但刪除與id,即時通訊使用序列的自動增量,所以如何將聲明看起來像? 'pst = getConnection()。prepareStatement(「刪除客戶所在的位置」 +「id = seq1'」+ id +「的下一個值);' – 2014-11-02 13:23:28

+0

然後它的簡單使用MAX在回答中更新 – SMA 2014-11-02 13:24:41

+0

仍然刪除所有相同的代碼 – 2014-11-02 13:34:18

2

你應該根據自己數據庫中的ID,而不是他們的代碼刪除客戶。

用戶標識應始終唯一,代碼可能不是。

數據的一個例子可能會有所幫助。

+0

謝謝你幫我解決問題 – 2014-11-02 14:10:14