gpt4 book ai didi

java - MySQL Connector/J - 将 Java 字符串映射到 MySQL INT

转载 作者:行者123 更新时间:2023-11-29 00:32:19 24 4
gpt4 key购买 nike

documentation for Connector/J 表示它可以轻松地将 MySQL INT 转换为 Java String 类型。 (即,从结果集映射到 Java 类型。)

但这是否反过来呢?换句话说,您可以在 MySQL 需要 INT 的预准备语句中使用 Java String 吗?这被认为是好的/坏的做法吗?

# pseudo-code
table EMPLOYEES
(
NAME VARCHAR(50)
EMPLOYEE_NO INT(11)
)

// Java code
PreparedStatement prepStmt =
con.prepareStatement("SELECT * from EMPLOYEES where EMPLOYEE_NO=?");
prepStmt.setString(1, str);
ResultSet rs = prepStmt.execute(); // ...

最佳答案

根据 javadoc of setString() (我的重点):

Sets the designated parameter to the given Java String value. The driver converts this to an SQL VARCHAR or LONGVARCHAR value (depending on the argument's size relative to the driver's limits on VARCHAR values) when it sends it to the database.

这意味着这可能不起作用,尽管它可能会起作用(我想 int 在发送时就像字符串一样表示),但如果情况发生变化,情况可能并非如此。无论哪种方式,我都不认为这是好的做法,因为字符串中可能存在非整数值。

相反,使用:

prepStmt.setInt(1, Integer.parseInt(str));

并按您认为合适的方式处理 NumberFormatException


此外,以下行无效,因为 execute() 返回一个 boolean 值。:

ResultSet rs = prepStmt.execute();

相反,您可以使用:

if (prepStmt.execute()) {
ResultSet rs = prepStmt.getResultSet();
}

ResultSet rs = prepStmt.executeQuery();

关于java - MySQL Connector/J - 将 Java 字符串映射到 MySQL INT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15961104/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com