请问为什么使用PreparedStatement的setString方法会自动在varchar后面补空格?

defstu 2003-12-30 10:14:32
rt,SQLServer2k,JDK1.4,sun.jdbc.odbc.JdbcOdbcDriver,
字段的属性是varchar(50)
使用PreparedStatement插入数据的时候就会自动补满50个字符,结果取出的
东西就和写进去的不一样了。
如果直接在Statement里面写"'"+str.replaceAll("'","''")+"'"就没问题
可是我看到很多网上的代码里面都是直接setString的,是为什么呢?
...全文
144 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
defstu 2003-12-30
  • 打赏
  • 举报
回复
谢谢 forjie(风信子) !!!
果然是jdbcodbc,果然是它,换了驱动就好了
defstu 2003-12-30
  • 打赏
  • 举报
回复
to tiger_wkh52741(走走.跑跑.瞧瞧!) :
对于Varchar的长度限制,我的理解是VARCHAR类型的数据的最大长度不能超过某个上限,
否则就会使用LONGVARCHAR。
我最大的疑惑是为什么Statement和ResultSet都能保证存储的和取出的字符串一致。
用Prepared就是图它快的,如果必须补空格的话取的时候就要trim(),万一忘了就会出错
而且还要花空间存储那些空格……
有没有让PreparedStatement不补空格的方法呢?
forjie 2003-12-30
  • 打赏
  • 举报
回复
不会呀。我没有这样的问题。是不是jdbcodbc的问题,试试用jdbc连。
defstu 2003-12-30
  • 打赏
  • 举报
回复
我已开始也以为是这个问题,检查之后确定是Varchar了
而且同样的数据库我用Statement直接insert或者用ResultSet
的InsertRow都没有这个问题,只是PreparedStatement才会出这个问题
如果Varchar和Char结果都一样的话用Varchar还不如Char呢
tiger_wkh52741 2003-12-30
  • 打赏
  • 举报
回复
呵呵.楼主你理解错我的意思了...
我个人认为楼主的疑惑是因为Driver对String也好Varchar也罢.都是有长度限制的!所以你的东东出来的和进去的不一样啊!
yu_shi_bin 2003-12-30
  • 打赏
  • 举报
回复
我怀疑是不是你字段看错啦 是char 而不是varchar ,char会自动加的
defstu 2003-12-30
  • 打赏
  • 举报
回复
你理解错了,那句话的意思是说具体使用VARCHAR还是LONGVARCHAR依赖于String的长度是否超过Driver对于Varchar长度的限制,并不是说String的长度依赖于Driver。
tiger_wkh52741 2003-12-30
  • 打赏
  • 举报
回复
public void setString(int parameterIndex,String x)throws SQLException
Sets the designated parameter to a Java String value. The driver converts this to an SQL VARCHAR or LONGVARCHAR value (depending on the argument's size relative to the driver's limits on VARCHAR values) when it sends it to the database.
Parameters:parameterIndex - the first parameter is 1, the second is 2, ...x - the parameter value
Throws:SQLException - if a database access error occurs
Please attetion: "depending on the argument's size relative to the driver's limits on VARCHAR values"

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧