对TEXT类型的列(在MySQL数据库中)使用PreparedStatement
&n; setObject
方法时,最后一个参数应该是什么?
例如,我知道这对于VARCHAR列是可以的:
stmt.setObject(i, "bla", Types.VARCHAR);
其中stmt
是PreparedStatement
,Types
是java.sql.Types
。
但是如果DB列的类型是TEXT,我还应该使用VARCHAR吗?或者BLOB,或CLOB?
答案 0 :(得分:9)
答案(是的,你打算使用VARCHAR)可以在这里找到:
http://dev.mysql.com/doc/connector-j/en/connector-j-reference-type-conversions.html(更新过时的断开链接)
以下是有关MYSQL TEXT
类型
答案 1 :(得分:1)
为什么不使用
stmt.setString ?
是否为文字类型? http://download.oracle.com/javase/1.4.2/docs/api/java/sql/PreparedStatement.html#setString(int,java.lang.String)
答案 2 :(得分:0)
此处没有TEXT字段Oracle Doc for sql Types,但它可能会出现在未来(现在您可以使用大小为21845的信息作为实现硬编码技巧 - 如果您稍后需要知道这是TEXT字段 - 实际字段大小是您选择的,其余文本由MySql记忆在其他地方
所以第一个回答“使用VARCHAR作为类型”是有效的(可能是库调用setString)
答案“setString”也在工作(如果你想自己做决定,前面有一个开关(field_type) - 我使用这个选项来调试代码更容易 - 速度与cost = switch相同两种情况都是+ setString)
感谢大家的链接和确认!