如何建立Praparedstatement批处理对象?

Girl_my_lover 2009-05-15 08:41:47
Statement stmt = con.getStatement();
stmt.addBatch(sql);
stmt.addBatch(sql);
stmt.addBatch(sql);
可以建立批处理的statement对象

现在要问的是:preparedstatement如何建立批处理对象?
preparedstatement的addBatch()方法没有String sql参数,如何添加sql语句?
...全文
90 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
muyu652 2009-05-16
  • 打赏
  • 举报
回复

/**
* PS执行批量插入操作
*
*/
public static void executePreparedInsertBath() {
Connection con = null;
try {
con = MysqlConnection.mySqlCon();
String sql = "insert into OEC_STUDENT (STUID,STUNAME,DESCRIPTION,CREATED) "
+ "values(?,?,'','2006-10-10')";
PreparedStatement ps = con.prepareStatement(sql);

for (int i = 0; i < 10; i++) {
long id = System.currentTimeMillis();
String name = "OEC" + id;
ps.setObject(1, new Long(id));
ps.setObject(2, name);
ps.addBatch();
}
ps.executeBatch();
} catch (Exception e) {
e.printStackTrace();
} finally {
if (con != null) {
try {
con.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}

/**
* PS执行批量插入操作
*
*/
public static void executePreparedDeleteBath() {
Connection con = null;
try {
con = MysqlConnection.mySqlCon();
String sql = "select STUID,STUNAME,DESCRIPTION,CREATED from OEC_STUDENT where STUNAME like ?";
PreparedStatement ps = con.prepareStatement(sql);
ps.setObject(1, "OEC%");
ResultSet rs = ps.executeQuery();
int i = 0;
while (rs.next()) {
i++;
}
System.out.println("total:" + i);
} catch (Exception e) {
e.printStackTrace();
} finally {
if (con != null) {
try {
con.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}

muyu652 2009-05-16
  • 打赏
  • 举报
回复


/**
* 执行批量插入操作
*
*/
public static void executeInsertBath() {
Connection con = null;
try {
con = MysqlConnection.mySqlCon();
Statement st = con.createStatement();

for (int i = 0; i < 10; i++) {
long id = System.currentTimeMillis();
String name = "OEC" + id;
String sql = "insert into OEC_STUDENT (STUID,STUNAME,DESCRIPTION,CREATED) "
+ "values(#ID$,'#name$','','2006-10-10')";
String sqlIdAdd = StringUtils.replaceOnce(sql, "#ID$", String
.valueOf(id));
String sqlNameAdd = StringUtils.replaceOnce(sqlIdAdd, "#name$",
name);
st.addBatch(sqlNameAdd);
}
st.executeBatch();
} catch (Exception e) {
e.printStackTrace();
} finally {
if (con != null) {
try {
con.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
angelsimle 2009-05-16
  • 打赏
  • 举报
回复
PerparedStatement本身就是批处理的因此在创建PreparedStatment对象时就已经将要处理的 sql 预处理了
PreparedStatement pstmt = conn.prepareStatement(sql);
careers1111 2009-05-16
  • 打赏
  • 举报
回复
详细介绍

http://blog.sina.com.cn/s/blog_5f17b8e40100cfn1.html
careers1111 2009-05-16
  • 打赏
  • 举报
回复
public boolean saveOrUpdateCommit(String sql1,String sql2)
{
boolean temp = true;
try
{
conn.setAutoCommit(false);
stmt = conn.createStatement();
stmt.addBatch(sql1);
stmt.addBatch(sql2);
stmt.executeBatch();
conn.commit();

}catch(SQLException e)
{
e.printStackTrace();
temp = false;
try
{
conn.rollback();
}catch(SQLException e1){
e1.printStackTrace();
}

}
return temp;
}
中智软件科技 2009-05-16
  • 打赏
  • 举报
回复
PreparedStatement pstmt 有一个executeBatch 方法
Girl_my_lover 2009-05-15
  • 打赏
  • 举报
回复
在顶起
Girl_my_lover 2009-05-15
  • 打赏
  • 举报
回复
自己顶下

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧