有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java阻止jdbc在sql插入和更新时填充字符串

我们正在使用jdbc odbc桥连接到MS SQL数据库。当执行插入或更新时,字符串被放入数据库,填充到数据库字段的长度。有没有办法关闭这种行为(字符串应该在不填充的情况下进入表)

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

编辑:数据库中的字段被列为nvarchar(X),其中X=50255,随便什么

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

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

共 (3) 个答案

  1. # 1 楼答案

    在数据库中使用CHAR字段还是VARCHAR字段

    CHAR填充字段的大小。瓦查尔没有

    我不认为JDBC会导致这种情况

  2. # 2 楼答案

    你是如何设置字符串的?你在干什么

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

    如果是这样,试试这个:

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

    同样,这只是猜测,没有看到你是如何插入的

  3. # 3 楼答案

    如果你可以使用常规的SQL工具(比如…我不知道MS SQL服务器的Toad之类的工具)进行插入,那么更改驱动程序就可以了

    使用Microsoft SQL Server JDBC type IV驱动程序

    试试这个链接

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

    不幸的是,这些下载都有很多垃圾。有一个安装工具和数百个文件。看看下面的例子:

    intalldir\lib\someSingle。罐子

    复制到其他地方并卸载/删除其余部分

    几个月前我就这么做了,不幸的是我记不清它到底在哪里了

    编辑

    好的,我知道了

    点击下载,在页面末尾点击“我同意并想下载UNIX版本”

    这是一个常规的压缩文件(使用win-rar或其他文件),在那里可以找到那个单罐子

    这应该行得通