多种方式进行数据库的批量删除(删除用户信息为例)
2013-03-21 14:21
441 查看
文讲述的是多种方式进行数据库的批量删除(以删除用户信息为例)
方式一:
[java] view
plaincopy
/**
* 批量删除用户
*
* 使用事务处理方式进行删除
*
* @param userIds
* @return
*/
public boolean delUsers(String[] userIds){
boolean flag = false;
Connection conn = null;
PreparedStatement pstmt = null;
String sql = "delete from t_user where user_id=?";
try {
conn = DbUtil.getConnection();
conn.setAutoCommit(false);
pstmt = conn.prepareStatement(sql);
for(int i =0 ;i<userIds.length;i++){
pstmt.setString(1,userIds[i].trim());
pstmt.addBatch();
}
pstmt.executeBatch(); //批量执行
conn.commit();//提交事务
flag = true;
} catch (SQLException e) {
try {
conn.rollback(); //进行事务回滚
} catch (SQLException ex) {
}
}finally {
DbUtil.close(pstmt);
DbUtil.close(conn);
}
return flag;
}
方式二:
[java] view
plaincopy
/**
* 根据用户id进行删除单条信息
* @param userId
* @return
*/
public boolean delUser(String userId){
boolean flag = false;
String sql = "delete from t_user where user_id=?";
Connection conn = null;
PreparedStatement pstmt = null;
try {
conn = DbUtil.getConnection();
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, userId);
if(pstmt.executeUpdate()>0){
flag = true;
}
} catch (SQLException e) {
e.printStackTrace();
}finally {
DbUtil.close(pstmt);
DbUtil.close(conn);
}
return flag;
}
/**
* 批量删除用户
*
* 直接使用for循环进行删除
*
* @param userIds
* @return
*/
public boolean delUsers(String[] userIds){
boolean flag = false;
for (int i = 0; i < userIds.length; i++) {
flag = flag & delUser(userIds[i]);
}
return flag;
}
方式三:
[java] view
plaincopy
* 批量删除用户
*
* 采用一条语句完成删除,只提交一次
*
* 采用Statement拼串方式
* delete from t_user where user_id in ('aaaa', 'afff', 'eeee')
* @param userIds
*//*
public void delUsers(String[] userIds) {
StringBuilder sbStr = new StringBuilder();
for (int i=0; i<userIds.length; i++) {
sbStr.append("'")
.append(userIds[i])
.append("'")
.append(",");
}
String sql = "delete from t_user where user_id in (" + sbStr.substring(0, sbStr.length() - 1) + ")";
System.out.println("UserManager.delUser() -->>" + sql);
Connection conn = null;
Statement stmt = null;
try {
conn = DbUtil.getConnection();
stmt = conn.createStatement();
stmt.executeUpdate(sql);
}catch(SQLException e) {
e.printStackTrace();
}finally {
DbUtil.close(stmt);
DbUtil.close(conn);
}
}
方式四:
[java] view
plaincopy
/**
* 批量删除用户
*
* 采用一条语句完成删除,只提交一次
* 采用PreparedStatement占位符方式
* @param userIds
*/
public void delUsers(String[] userIds) {
StringBuilder sbStr = new StringBuilder();
for (int i=0; i<userIds.length; i++) {
sbStr.append("?");
if (i < (userIds.length - 1)) {
sbStr.append(",");
}
}
String sql = "delete from t_user where user_id in (" + sbStr.toString() + ")";
Connection conn = null;
PreparedStatement pstmt = null;
try {
conn = DbUtil.getConnection();
pstmt = conn.prepareStatement(sql);
for (int i=0; i<userIds.length; i++) {
pstmt.setString(i + 1, userIds[i]);
}
pstmt.executeUpdate();
}catch(SQLException e) {
e.printStackTrace();
}finally {
DbUtil.close(pstmt);
DbUtil.close(conn);
}
}
以上提供了四种方式进行批量删除数据库信息,其中第二种方式不推荐使用,其他三种方式个人觉得都很不错,可以借鉴使用。
以上几种方式的实现通过学习动力节点_王勇_Java项目视频_DRP完整版之后的结果,在这儿感谢王勇老师,很喜欢您的视频讲解。
方式一:
[java] view
plaincopy
/**
* 批量删除用户
*
* 使用事务处理方式进行删除
*
* @param userIds
* @return
*/
public boolean delUsers(String[] userIds){
boolean flag = false;
Connection conn = null;
PreparedStatement pstmt = null;
String sql = "delete from t_user where user_id=?";
try {
conn = DbUtil.getConnection();
conn.setAutoCommit(false);
pstmt = conn.prepareStatement(sql);
for(int i =0 ;i<userIds.length;i++){
pstmt.setString(1,userIds[i].trim());
pstmt.addBatch();
}
pstmt.executeBatch(); //批量执行
conn.commit();//提交事务
flag = true;
} catch (SQLException e) {
try {
conn.rollback(); //进行事务回滚
} catch (SQLException ex) {
}
}finally {
DbUtil.close(pstmt);
DbUtil.close(conn);
}
return flag;
}
方式二:
[java] view
plaincopy
/**
* 根据用户id进行删除单条信息
* @param userId
* @return
*/
public boolean delUser(String userId){
boolean flag = false;
String sql = "delete from t_user where user_id=?";
Connection conn = null;
PreparedStatement pstmt = null;
try {
conn = DbUtil.getConnection();
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, userId);
if(pstmt.executeUpdate()>0){
flag = true;
}
} catch (SQLException e) {
e.printStackTrace();
}finally {
DbUtil.close(pstmt);
DbUtil.close(conn);
}
return flag;
}
/**
* 批量删除用户
*
* 直接使用for循环进行删除
*
* @param userIds
* @return
*/
public boolean delUsers(String[] userIds){
boolean flag = false;
for (int i = 0; i < userIds.length; i++) {
flag = flag & delUser(userIds[i]);
}
return flag;
}
方式三:
[java] view
plaincopy
* 批量删除用户
*
* 采用一条语句完成删除,只提交一次
*
* 采用Statement拼串方式
* delete from t_user where user_id in ('aaaa', 'afff', 'eeee')
* @param userIds
*//*
public void delUsers(String[] userIds) {
StringBuilder sbStr = new StringBuilder();
for (int i=0; i<userIds.length; i++) {
sbStr.append("'")
.append(userIds[i])
.append("'")
.append(",");
}
String sql = "delete from t_user where user_id in (" + sbStr.substring(0, sbStr.length() - 1) + ")";
System.out.println("UserManager.delUser() -->>" + sql);
Connection conn = null;
Statement stmt = null;
try {
conn = DbUtil.getConnection();
stmt = conn.createStatement();
stmt.executeUpdate(sql);
}catch(SQLException e) {
e.printStackTrace();
}finally {
DbUtil.close(stmt);
DbUtil.close(conn);
}
}
方式四:
[java] view
plaincopy
/**
* 批量删除用户
*
* 采用一条语句完成删除,只提交一次
* 采用PreparedStatement占位符方式
* @param userIds
*/
public void delUsers(String[] userIds) {
StringBuilder sbStr = new StringBuilder();
for (int i=0; i<userIds.length; i++) {
sbStr.append("?");
if (i < (userIds.length - 1)) {
sbStr.append(",");
}
}
String sql = "delete from t_user where user_id in (" + sbStr.toString() + ")";
Connection conn = null;
PreparedStatement pstmt = null;
try {
conn = DbUtil.getConnection();
pstmt = conn.prepareStatement(sql);
for (int i=0; i<userIds.length; i++) {
pstmt.setString(i + 1, userIds[i]);
}
pstmt.executeUpdate();
}catch(SQLException e) {
e.printStackTrace();
}finally {
DbUtil.close(pstmt);
DbUtil.close(conn);
}
}
以上提供了四种方式进行批量删除数据库信息,其中第二种方式不推荐使用,其他三种方式个人觉得都很不错,可以借鉴使用。
以上几种方式的实现通过学习动力节点_王勇_Java项目视频_DRP完整版之后的结果,在这儿感谢王勇老师,很喜欢您的视频讲解。
相关文章推荐
- 多种方式进行数据库的批量删除(删除用户信息为例)
- 删除信息[置顶] Java中怎样实现批量删除操作(Java对数据库进行事务处理)?
- [转]Oracle创建删除用户、角色、表空间、导入导出数据库命令行方式总结
- Domino 下批量删除邮箱用户个人配置文档及数据库文件
- Oracle创建删除用户、角色、表空间、导入导出数据库命令行方式总结
- 用户身份认证(Authenticate),并将用户输入的信息与数据库进行判断
- Oracle创建删除用户、角色、表空间、导入导出数据库命令行方式总结
- Oracle创建删除用户、角色、表空间、导入导出数据库命令行方式总结
- AngularJS综合用户信息, 表单验证,过滤查询,全选反选,批量删除,修改,添加
- Oracle创建删除用户、角色、表空间、导入导出数据库命令行方式总结
- Oracle创建删除用户、角色、表空间、导入导出数据库命令行方式总结
- sharepoint 2007 使用open with windows explorer的方式打开sharepoint 目录,然后批量复制文件,会导致被复制的文件信息被修改成当前用户和当前时间
- Java中怎样实现批量删除操作(Java对数据库进行事务处理)?
- 如何批量删除Docker中已停止的容器?-可以有多种方式
- Oracle创建删除用户、角色、表空间、导入导出数据库命令行方式总结(转)
- mySql事务_ _Java中怎样实现批量删除操作(Java对数据库进行事务处理)?
- 修改用户信息的时候,使用Servlet对新的数据和数据库的数据进行对比,修改成功实现页面的弹窗和页面的跳转
- Oracle创建删除用户、角色、表空间、导入导出数据库命令行方式总结
- avaweb对数据库进行事务处理(批量删除操作)
- 批量删除Orcale数据库用户表