准备语句查询中varchar(10)的类型是什么?

时间:2013-11-08 21:18:34

标签: java mysql jdbc

我正在使用PreparedStatements进行Java数据库工作。

我目前正在参考本教程我的MKYong:http://www.mkyong.com/jdbc/jdbc-preparedstatement-example-batch-update/

对于我的主键,我有varchar(10)用于存储Unix时间。在preparedStatement.setSomething()之类的声明中,我必须定义它是typevarChar(10)的类型是什么?

Unix的时间是这样的:1382944400,类似于2013年11月8日和今天的某个时间。

2 个答案:

答案 0 :(得分:3)

每个CHAR(X)VARCHAR(X)字段都属于String Java类型。

来自PreparedStatement#setString javadoc(强调我的):

  

将指定参数设置为给定的Java String值。该驱动程序会将其转换为 SQL VARCHARLONGVARCHAR 值(取决于参数的大小相对于驱动程序对VARCHAR的限制当它将数据发送到数据库时。

答案 1 :(得分:1)

varchar的自然类型是String,虽然大多数其他类型可能正常工作并被转换(如果你至少使用setObject())。

但为什么要使用varchar来存储长值?为什么不用数字呢?这将消耗更少的内存,导致更好的自然排序,并且会更有效率。