繁体   English   中英

防止jdbc在SQL插入和更新中填充字符串

[英]Prevent jdbc from padding strings on sql insert and update

我们正在使用jdbc-odbc桥连接到MS SQL数据库。 执行插入或更新时,会将字符串放入数据库中,并填充为数据库字段的长度。 有什么办法可以关闭此行为(字符串应该插入表中而不添加填充)?

作为参考,我们可以使用SQL管理工具和查询分析器插入不包含填充的字段值,因此,我很确定这是在jdbc或odbc层发生的。

编辑:数据库中的字段被列为nvarchar(X),其中X = 50、255,无论

编辑2:进行插入操作的调用使用一条准备好的语句,就像:

PreparedStatement stmt = new con.prepareStatement("INSERT INTO....");
stmt.setString(1, "somevalue");

您如何设置字符串? 你在做什么?:

PreparedStatement stmt = new con.prepareStatement("INSERT INTO....");
stmt.setString(1, "somevalue");

如果是这样,请尝试以下操作:

stmt.setObject(1, "somevalue", Types.VARCHAR);

同样,这只是猜测而没有看到您的插入方式。

您正在使用数据库中的CHAR字段还是VARCHAR?

CHAR填充字段的大小。 VARCHAR没有。

我认为JDBC不会造成这种情况。

如果您可以使插入程序与常规SQL工具(例如...我不知道Toad for MS SQL Sever之类的东西)一起工作,则更改驱动程序应该可以。

使用Microsoft SQL Server JDBC IV型驱动程序。

试试这个链接

http://www.microsoft.com/downloads/details.aspx?familyid=F914793A-6FB4-475F-9537-B8FCB776BEFD&displaylang=en

不幸的是,这类下载会带来很多垃圾。 有一个安装工具和另外数百个文件。 只是寻找类似的东西:

intalldir \\ lib \\ someSingle.jar

复制到其他地方,然后卸载/删除其余部分。

几个月前我做了这个,不幸的是我没有确切地记得它的位置。

编辑

好,我知道了。

单击下载,然后在页面末尾单击“我同意并想要下载UNIX版本”。

这是一个常规的压缩文件(使用win rar或other),并在其中查找该单独的jar。

那应该工作。

如果使用捆绑的Sun JDBC-ODBC Bridge驱动程序,则可能要考虑迁移到适当的MS SQL JDBC驱动程序。 Sun建议不要在生产环境中使用桥驱动程序。

建议仅将JDBC-ODBC Bridge驱动程序用于实验性使用,或者在没有其他替代方法时才使用。

转移到更有针对性的驱动程序可能会共同解决您的问题,或者至少在您修复该错误时它将为生产提供解决方案。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM