for (int i = 0i <list.Lengthi++) {
string[] fullurl = list1[i].Split('|')
where.Append(string.Format("(Files_name='{0}' and Files_lastchangetime = '{1}') or ", fullurl))
}
where.Append(" 1 <1")
这样就可以拼成一个长where条件, 可以一次执行. 但是实际上数据库执行效率并不会有显著提高. 并且sql语句的长度会有限制, 如果数据量大的话就不能执行了.
你之所以感觉慢, 主要是因为你每次执行都会创建连接, 使用长连接或连接池(如果支持), 就能显著提高程序性能. 之后你可以观察下, 循环执行和拼接长SQL语句一次执行, 两者差异可以忽略不计.
在这样的前提下, 使用拼接SQL的方法要额外判断语句长度, 如处理不当, 程序可靠性会大打折扣. 所以改成使用连接池, 逐条执行是最可行的方案.
另: 执行delete语句应该使用ExecuteNonQuery方法
public void delete(int[] id) throws SQLException{//假定conn ps 都获取到
Connection conn=null
StringBuffer sql=new StringBuffer("delete from school where id in(")
for (int i = 0i <id.lengthi++) {
if (i==id.length-1)
sql.append(id[i]+")")
else
sql.append(id[i]+",")
}
PreparedStatement ps=conn.prepareStatement(sql.toString())
ps.execute()
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)