数据库对于sql的长度是有一些限制的,我们在编写时一定要注意:
1.IN 子句中的LIST个数最长为1000
2.如果是拼接sql,注意sql的大小,虽然没有严格的限制,优势会报ORA-01704: string literal too long的错误
3.oracle绑定变量的个数有限制,为65535,当使用批量插入时一定要注意不要超过这个限制;
4.REGEXP_REPLACE 参数字符长度限制4000;
数据库连接的限制:
1.不论是oracle数据库还是mysql数据库都可以配置连接最大空闲时间(空闲时间长说明连接长时间没有被使用执行sql命令),超过这个时间连接将会被断开,断开后应用端的数据库连接池是不知道的,程序仍能够通过getconnection()从连接池中获取到connection对象,但是在执行statement阶段会报closed connection 的错误,为了防止这个错误,需要在连接池中配置连接最大空闲时间,这个空闲时间应该不大于数据库配置的最大空余时间;
2.有的连接池为了防止连接泄露,配置了连接的最大使用时间,连接使用超过这个时间将会被强制回收到连接池,statement将会被强制断开,程序将会报java.sql.SQLRecoverableException:closed statement 错误;例如阿里的连接 池com.alibaba.druid.pool.DruidDataSource就有removeAbandonedTimeout这个配置;