当前位置: 首页 > 知识库问答 >
问题:

Groovy withBatch(或者JDBC驱动程序)中的Bug?

裴俊豪
2023-03-14

我有以下更新代码:

String updateSqlText = "update myTable set id=1006, floatParam=? where sud_id=10067237";

def updateCounts = sql.withBatch(1, updateSqlText) { ps ->
    def args = [null]
    ps.addBatch(args)
}

当我运行它时,它告诉我:catch:java。sql。BatchUpdateException:不允许将数据类型“VARCHAR”隐式转换为“FLOAT”。使用CONVERT函数运行此查询。

但是,如果我这样做:

String updateSqlText = "update myTable set id=1006, floatParam=? where sud_id=10067237";
def args = [null]
imagineSql.executeUpdate(updateSqlText, args)

它工作没有问题

该参数是一个float,当我调用withBatch时,它似乎试图将null转换为string,但在常规更新中效果良好。

我正在使用赛贝斯和jTDS jdbc驱动程序。

编辑:看起来如果我改变了

def args = [null] 

def args = [Types.NULL]

我想Groovy需要修改才能在Batch中做到这一点。

Edit2:现在我面临一个问题,将null添加到Varchar中,这会让我

抓到:爪哇。sql。BatchUpdateException:不允许从数据类型“INT”隐式转换为“VARCHAR”。使用CONVERT函数运行此查询。

共有1个答案

上官霄
2023-03-14

可以尝试将bind变量指定为null对象吗?

sql.withBatch(1, updateSqlText) {
   def args = [org.codehaus.groovy.runtime.NullObject.getNullObject()]
}

或者有可能

Float myFloatArg = null;  // or = 23.4f;
sql.withBatch(1, updateSqlText) {
   def args = [myFloatArg]
}
 类似资料:
  • 我需要在Java中使用JDBC做一些简单的实验,我认为运行derby数据库应该是实现这一点的简单途径。 我已经安装了derby,并使用“ij”工具创建了一个表并将一些数据放入其中。我也可以用ij读回数据。 然而,当我试图使用实际的Java代码连接到此时,事情变得很糟糕。这是我尝试了几件事情的情况之一,每件事都以不同的方式失败,所以我希望你们都能原谅这有点模糊。但这些是我迄今为止尝试/失败的要点。

  • 问题内容: 有人告诉我,加载JDBC驱动程序的首选方法是: 我知道,这对于从XML配置文件或用户输入中读取多个驱动程序之间的动态决策更好。我很好奇的是,调用此语句如何将指定的驱动程序加载到我们什至没有将生成的“ Class”对象存储在任何地方的环境中。JavaDocs条目说: 返回与具有给定字符串名称的类或接口关联的Class对象 在那种情况下,Java开发人员仅凭此语句如何设法促进驱动程序对象的

  • 主要内容:JDBC驱动程序是什么?,JDBC驱动程序类型,应该使用哪个驱动程序?JDBC驱动程序是什么? JDBC驱动程序在JDBC API中实现定义的接口,用于与数据库服务器进行交互。 例如,使用JDBC驱动程序,可以通过发送SQL或数据库命令,然后使用Java接收结果来打开数据库连接并与数据库进行交互。 JDK附带的包包含各种类,其类的行为被定义,实现在第三方驱动程序中完成。 第三方供应商在其数据库驱动程序中实现接口。 JDBC驱动程序类型 JDBC驱动程序实现因Java

  • 问题内容: 我很难确定应该如何在我的debian 6.0服务器上为PostgreSQL安装JDBC驱动程序。我已将驱动程序.jar移至以下目录: 然后,教程讨论如何使用此代码: 但是,由于我是PostgreSQL的新手,所以我不知道应该把这行放在哪里,或者这是否正确。 我的问题是,除了将jar文件移动到此位置之外,为了在我的postgreSQL安装上安装JDBC驱动程序,我实际上需要做什么? 编辑

  • 问题内容: 输出 >无法连接到数据库服务器java.lang.ClassNotFoundException 问题答案: 看来您应该将MySQL驱动程序jar放入 类路径中 。

  • 问题内容: 我目前正在为大学的一个班级做项目。我正在学习有关连接和操作数据库的信息,我们正在使用Microsoft .accdb文件。 这是我到目前为止所拥有的。 当寻找“ sun.jdbc.odbc.JdbcOdbcDriver”时,我得到以下输出。 似乎很容易解决。看来我想念司机或类似的东西。但是,我很难找到解决方法。JDK随附驱动程序吗?我需要单独下载吗?是否取决于我的操作系统?(Mac O