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

所有的PreparedStatement setString(…),即使相应的数据类型是整数

邵璞
2023-03-14
问题内容

我遇到以下代码,我认为它做错了事:

(请注意,这是JDK 1.4.2,因此未键入列表)

StringBuffer queryBuffer = new StringBuffer();
ArrayList temp = new ArrayList();

... 
queryBuffer.append("and sb.POSTCODE = ? ");
temp.add(postcode);
...

conn = ConnectionManager.getConnection();       
pstmt = conn.prepareStatement(queryBuffer.toString());

这就是我所关心的:

for(int i=0; i<temp.size(); i++) {
    log.debug("setString("+ (i+1) + "," + (String)temp.get(i) + ")");
    pstmt.setString(i+1, (String)temp.get(i));
}

但是我注意到数据库中一些相应的数据类型(字段)是整数和日期,这可以吗?


问题答案:

考虑使用PreparedStatement
setObject()方法代替
setString()

如果在编译时类型未知,则PreparedStatement setObject() 将尝试为您转换任何 java.lang 类型。

因此,使用更新的for循环(假设您具有Java 5.0)和常规的null处理:

int i = 0;
for(Object value : temp) {
    if (value == null) {
        // set null parameter if value type is null and type is unknown
        pstmt.setNull(++i, Integer.MIN_VALUE); 
    } else {
        pstmt.setObject(++i, value);
    }
}

请注意,如果已知setNull()可以将类型作为第二个参数。



 类似资料:
  • 对于熊猫,有人知道,除了 (i) ,(以及的其他变体,如,等) (ii) (iii), 例如字符串列,总是有一个的? 或者,我想知道,在上面的列表中,除了(I)、(ii)和(iii)之外,是否有任何数据类型不使其成为对象?

  • 使用整数时,有多种可用类型(例如int、numpy.int8、numpy.int16等)。如果我编写的泛型函数要求一个变量是整数,那么如何针对Python/numpy中所有可能的“整数”类型测试该类型?关于浮动,也可以问同样的问题。我最初认为 会/应该工作,但事实并非如此。 是否有一种方法可以测试所有可用整数类型的整数变量?

  • 在本地我使用mysql,所以当我使用 不幸的是,应用程序也必须在不同的数据库上运行,我还没有被告知哪些数据库是“完全”的。 是否有可能制作出具有类似效果的东西,但可以在大多数数据库中使用?我怎样才能做到这一点?

  • 问题内容: 我从Hibernate开始,但有一个我无法弄清的错误。 我有以下课程: 那我有 最后: 我得到的错误是: 错误引发的唯一提示是该错误在此处的主类中: 这些id是字符串,我将它们标注为@GeneratedValue(我认为我不需要自己初始化它们)。关系@OneToMany具有级联注释,因此应正确映射。 我已经尝试了没有session.save行的代码,并且不会抛出错误,因此代码本身不是问

  • 问题内容: 您好,所以我想将列表中的整数相乘。 例如; 输出: 所以我在网上搜索,大多数答案是关于将所有整数彼此相乘,例如: [1 * 2 * 3] 问题答案: 尝试列表理解: 这将每个元素乘以2。 当然,有多种方法可以做到这一点。如果您喜欢lambda函数和,甚至可以 将函数应用于中的每个元素。这等效于: 请注意,返回的是地图对象,而不是列表,因此,如果以后确实需要列表,则可以在以后使用该函数,

  • 问题内容: 我今天遇到了与此类似的代码。 似乎暗示数据类型信息可以与NULL值关联。这是否将元数据附加到将其标识为指定数据类型的NULL值? 这篇文章详细介绍了一种在SqlServer中查找数据类型的方法,但是当我尝试以下行时,它以NULL的形式返回: 问题答案: 在SQL Server中,是在默认情况下所有我能想到的场景。您可以使用以下代码确定这一点: 结果: 在将其放入表中或将其与某些上下文元