2014-11-02 68 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