Statement executeUpdate对sql长度有限制

feesx 发布于 2012/06/25 14:07
阅读 1K+
收藏 0

@红薯 你好,想跟你请教个问题:Statement executeUpdate对sql长度有限制? 当字符串过长就报错, PrepareStatement 用?方式就不会,能说下原因马?谢谢

加载中
0
红薯
红薯

PreparedStatement 的目的是为了对 SQL 语句进行预编译,另外使用动态参数的好处在于避免了SQL注入。

再有如果你要多次执行同一个SQL来插入数据或者更新数据等操作,PreparedStatement 的性能要比 Statement 好很多,因为一次 prepare 多次执行

Codin
Codin
此贴必火。留名
Y-QTCe
Y-QTCe
红薯回帖没看帖……
0
feesx
feesx

引用来自“红薯”的答案

PreparedStatement 的目的是为了对 SQL 语句进行预编译,另外使用动态参数的好处在于避免了SQL注入。

再有如果你要多次执行同一个SQL来插入数据或者更新数据等操作,PreparedStatement 的性能要比 Statement 好很多,因为一次 prepare 多次执行

呵呵,@红薯 大哥这次确实回答的有点轻浮
0
逝水fox
逝水fox
记得不是Java的限制,而是数据库本身的限制。不知道用什么数据库,如果是mysql的话有个max_allowed_packet配置项来设定每次请求通信数据包的大小,超过大小就报错,默认好像是1M。

Statement一个查询请求的数据包相当于要带上查询语句和数据,而预编译语句发送语句和设定数据参数是分开的不同的请求,当然后者比较不容易超过大小限制了。Java的驱动包封装其实太高了,后面背着干了一大堆事情,我自己是觉得C的MySQL lib更接近MySQL提供的Socket接口协议一些。
0
大东哥
大东哥

引用来自“feesx”的答案

引用来自“红薯”的答案

PreparedStatement 的目的是为了对 SQL 语句进行预编译,另外使用动态参数的好处在于避免了SQL注入。

再有如果你要多次执行同一个SQL来插入数据或者更新数据等操作,PreparedStatement 的性能要比 Statement 好很多,因为一次 prepare 多次执行

呵呵,@红薯 大哥这次确实回答的有点轻浮
AI算法要改进一下.
返回顶部
顶部