2013-08-02 2 views
0

MySQL 테이블에서 모든 데이터를 삭제 한 다음 새 데이터를 쓰는 Java 함수를 작성하고 있습니다. 다음은 내 기능이다. 성공적으로 데이터를 삭제 한 후,이 라인MySQL 테이블에서 모든 데이터를 삭제하고 새 데이터로 테이블을 채우는 방법

System.out.println("Query "); 
System.out.println(_snackListQuery); 

가 정확한 값을 인쇄하고 있는지

public void editsnack(ArrayList snames) 
{ 
System.out.println("Snack Names "+snames); 
Statement _snacksListStmt = null; 
Statement _deleteTableDtataStmt = null; 
try 
{ 
    _snacksListStmt = fCon.createStatement(); 
    _deleteTableDtataStmt = fCon.createStatement(); 
    int i=0; 

     for(i=0;i<snames.size();i++) 
     { 
     String _name = snames.get(i).toString(); 
     String _deleteTableData ="TRUNCATE TABLE snacklist"; 
     _deleteTableDtataStmt.executeUpdate(_deleteTableData); 
     String _snackListQuery ="insert into snacklist(snackName)values('"+_name+"')"; 
     System.out.println("Query "); 
     System.out.println(_snackListQuery); 
     _snacksListStmt.executeUpdate(_snackListQuery); 
     } 
} 

참고 그러나 값은 테이블에 저장되지 않습니다.

이 문제를 어떻게 해결할 수 있습니까?

+0

우선 삽입하려는 각 항목의 모든 데이터가 삭제됩니다. 따라서'TRUNCATE' 코드를 * for * 이전의 for 루프로 이동하십시오. – NoLifeKing

+0

또한 SQL에는 주입이 포함될 수 있습니다. – NoLifeKing

+0

@NoLifeKing은 답으로 1 번째 의견을 게시하므로 받아 들일 수 있습니다. –

답변

1

우선 삽입하려는 각 항목에 대한 모든 데이터가 삭제됩니다.

는 그래서 for -loop

이전에 TRUNCATE 코드를 이동하고 SQL에 추가하기 전에 간식-이름을 살균 할 수 있는지, 또는 아래 SQL-주사를

0

연결이 autoCommit에 설정되어 있는지 여부에 따라 거래를 완료하려면 fCon.commit()으로 전화해야합니다. 작업이 끝나면 항상 진술을 닫아야합니다.

0

문제는 for 루프에서 삭제 쿼리입니다. 삽입 할 때마다 데이터가 잘립니다. 현재 로직으로 만 마지막 인서트가 테이블에 반영되고 다른 모든 데이터는 잘립니다. for 루프 외부에서 삭제 쿼리를 이동하고 시도하십시오.

 String _deleteTableData ="TRUNCATE TABLE snacklist"; 
    _deleteTableDtataStmt.executeUpdate(_deleteTableData); 


    for(i=0;i<snames.size();i++) 
    { 
    String _name = snames.get(i).toString(); 
    String _snackListQuery ="insert into snacklist(snackName)values('"+_name+"')"; 
    System.out.println("Query "); 
    System.out.println(_snackListQuery); 
    _snacksListStmt.executeUpdate(_snackListQuery); 
    } 
0

try 코드가 발생할 수 있습니다 ..

public void editsnack(ArrayList snames) 
    { 
    System.out.println("Snack Names "+snames); 
    Statement _snacksListStmt = null; 
    Statement _deleteTableDtataStmt = null; 
    try 
    { 
    _snacksListStmt = fCon.createStatement(); 
    _deleteTableDtataStmt = fCon.createStatement(); 

    String _deleteTableData ="TRUNCATE TABLE snacklist"; 
    _deleteTableDtataStmt.executeUpdate(_deleteTableData); 

    int i=0; 

     for(i=0;i<snames.size();i++) 
     { 
     String _name = snames.get(i).toString(); 
     String _snackListQuery ="insert into snacklist (snackName) values ('"+_name+"')"; 
     System.out.println("Query "); 
     System.out.println(_snackListQuery); 
     _snacksListStmt.executeUpdate(_snackListQuery); 
     } 
} 
관련 문제