数据库中存int和tinyint注意点:
| 最小值 | 临界值 | 临界值 | 最大值 | 结果 | |
|---|---|---|---|---|---|
| unsigned tinyint | 0 | 127 | 128 | 255 | 没有问题 |
| signed tinyint | -128 | 0 | 127 | 没有问题 | |
| unsigned int | 0 | 2147483647 | 2147483648 | 4294967295 | 当值大于2147483648出现问题 |
| signed int | -2147483648 | 0 | 2147483647 | 没有问题 |
结论:通过Java的rs.getInt(),2147483648和4294967295都有问题,所以只要unsign int超出2147483647都会有问题。(当然如果你rs.getLong也是没有问题的,因为java中Long的最大范围为2^63-1,但是一般写程序都是rs.getInt(),所以需要注意一下)。
解释:
Java中的Integer 源码:
所以超过2147483647会报错。如下:
com.MySQL.jdbc.exceptions.jdbc4.MySQLDataException: ‘2.147483648E9’ in column ‘4’ is outside valid range for the datatype INTEGER