2012-09-13 39 views
0

如何使用QueryRunner类从mysql数据库中删除记录? ids是作为String数组传递的。你也可以建议如果使用apache common db utils进行DML操作是否有用,那么还有哪些选择或最佳实践?如何使用QueryRunner类删除记录

下面是我的StudentDAO.java类的摘录。

  public boolean deleteStudent(String [] ids) { 

      Connection connection = null; 
      String query; 
      boolean result = false; 

      try { 
       Context initCtx = new InitialContext(); 
       Context envCtx = (Context) initCtx.lookup("java:comp/env"); 
       DataSource ds = (DataSource) envCtx.lookup("jdbc/cmsDB"); 
       connection = ds.getConnection(); 

       QueryRunner run = new QueryRunner(ds); 
       query = "delete tbl_student where student_id";// what should i put here??? 
       int nor = run.update(query, ids); //nor = no of records 

       if (nor > 0) { 
        result = true; 
       } else { 
        result = false; 
       } 
      } catch (NumberFormatException e) { 
       // e.getMessage(); 
       e.printStackTrace(); 
      } catch (SQLException e) { 
       e.printStackTrace(); 
      } catch (Exception e) { 
       e.printStackTrace(); 
      } finally { 
       DbUtils.closeQuietly(connection); 
      } 
      return result; 
     } 

回答

0
public static String join(String[] s, String delimiter) { 
    int imax = s.length; 
    String strJoin=""; 
    if (imax > 1) { 
     int i = 0; 
     for (i = 0; i < imax-1; i++) { 
      strJoin += s[i] + delimiter; 

     } 
     strJoin += s[i];    
    } 
    else 
     strJoin += s[0]; 
    return strJoin; 
} 

public boolean deleteStudent(String [] ids) { 
    ... 
    ... 
    ... 
    query = "delete tbl_student where student_id in ("+ join(ids,",") +")"; 
    ... 
    ... 
    ... 
]