c#如何删除数据库中数据,删除条件在一个数组里面,执行一次查询搞定,不要循环

c#如何删除数据库中数据,删除条件在一个数组里面,执行一次查询搞定,不要循环,第1张

StringBuilder where = new StringBuilder()

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()

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9576620.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-29
下一篇 2023-04-29

发表评论

登录后才能评论

评论列表(0条)

保存