当前位置: 首页 > 面试题库 >

JDBC PreparedStatement中“空基元”的解决方法?

濮君植
2023-03-14
问题内容

使用原始JDBC时,可以这样设置参数PreparedStatement

PreparedStatement statement = connection.prepareStatement(someSQLString);
String someString = getSomeString();
Integer int = getSomeInteger();
statement.setString(1, someString);
statement.setLong(2, 5L);
statement.setInt(3, int);

...

在这里,如果someStringis null,那就很好-
字符串可以为空。但是,如果getSomeInteger()返回null,我们就会遇到问题。

PreparedStatement#setInt(int,int)将基元设置int为值,因此不能为null

但是,我可能希望上面第三列的值null用于此特定记录是完全合理的。毕竟,我曾经使用过的每个RDBMS都允许数字(INT,LONG等)字段为NULLABLE。

那么解决方法是什么?


问题答案:

不要使用其中任何一个,而应使用setObjectJDBC驱动程序null代替您来管理值。



 类似资料:
  • 类似的问题是存在的,但没有一个答案受到关注.. 这里说“解决这个问题的一个方法是JDBC驱动程序由通用类加载器而不是应用程序类加载器加载,你可以通过将驱动程序的jar文件转移到tomcat lib中,而不是捆绑在web应用程序的war文件中 不明白通过通用类加载器加载意味着什么,它与应用程序类加载器有什么不同。

  • 本文向大家介绍input 中空格截段的问题解决方法,包括了input 中空格截段的问题解决方法的使用技巧和注意事项,需要的朋友参考一下 现在我要把记录中的一个字段在input 中显示出来 写法如下: 可是出问题了 如果数据库中要显示的字段是:a b c d 而不是abcd 实际运行中在input中只将a显示了出来 解决办法:

  • 本文向大家介绍基于selenium 获取新页面元素失败的解决方法,包括了基于selenium 获取新页面元素失败的解决方法的使用技巧和注意事项,需要的朋友参考一下 当我们使用selenium 实现模拟登陆时,获取到登陆按钮元素后,直接调用它的click()方法就能实现登陆跳转,并且此时的webDriver 也是指向 当前页面,这个是没问题的,不过需要注意的是因为页面加载速度一般小于程序运行速度,所

  • 问题内容: 我想要一个类属性,该表达式允许在等号的右侧进行表达式。所有版本的PHP都会阻塞以下代码,但是这种编写方式是为了将来更容易扩展。 对我来说,这似乎是非常基本的语法,并且为什么PHP不允许这样的事情是不可理解的。谁能想到可以保持以下代码的可读性和将来可扩展性的解决方法? 问题答案: 在PHP中声明类常量或属性时,只能为默认值指定原始值。因此,例如,该类声明将不起作用: 但是该类声明将: 这

  • 本文向大家介绍基于Intellij Idea乱码的解决方法,包括了基于Intellij Idea乱码的解决方法的使用技巧和注意事项,需要的朋友参考一下 使用Intellij Idea经常遇到的三种乱码问题: 1、工程代码乱码 2、main方法运行,控制台乱码 3、tomcat运行,控制台乱码 解决方案: 1.工程代码乱码 Settings > Editor > File Encodings > G

  • 本文向大家介绍VBS中解决带空格路径的三种方法,包括了VBS中解决带空格路径的三种方法的使用技巧和注意事项,需要的朋友参考一下 方法一: 方法二: 方法三: