在JDBC ResultSet中,在int结果列上调用getLong()或getShort()时会发生什么?

Uri*_*Uri 8 java jdbc

假设我有一个JDBC ResultSet,并调用getLong()或getshort()方法.

对于以下哪种SQL类型{SMALLINT,INT,BIGINT}我应该变长,以及哪些类型应该出错?

换句话说,如果我有一个INT并且我想要一个SMALLINT(一个简短的),我会得到它,还是会得到一个错误?同样地,如果我有一个INT并想要一个BIGINT(一个很长的),我会得到它,还是会得到一个错误?

Javadocs(下面列出)什么也没说.

public long getLong(int columnIndex)抛出SQLException

Retrieves the value of the designated column in the current row
Run Code Online (Sandbox Code Playgroud)

这个ResultSet对象在Java编程语言中是一个long.

Parameters:
    columnIndex - the first column is 1, the second is 2, ... 
Returns:
    the column value; if the value is SQL NULL, the value returned is 0 
Throws:
    SQLException - if a database access error occurs
Run Code Online (Sandbox Code Playgroud)

Bil*_*ard 10

从Java教程的" 从结果集中检索值"部分:

JDBC允许使用getXXX方法检索不同的SQL类型,具有很大的自由度.例如,方法getInt可用于检索任何数字或字符类型.它检索的数据将转换为int; 也就是说,如果SQL类型是VARCHAR,JDBC将尝试解析VARCHAR中的整数.但是,建议使用getInt方法仅检索SQL INTEGER类型,并且不能将其用于SQL类型BINARY,VARBINARY,LONGVARBINARY,DATE,TIME或TIMESTAMP.

我正在解释这意味着数据将被强制执行.它应该可以正常工作,如果它是一个向上,但我预计可能会失去精度(自然),例如,如果您正在读取LONG值使用getInt().如果您尝试使用文本阅读文本,我希望会抛出异常getInt().

  • 您可以调用 DataBaseMetaData.supportsConvert(int fromType, int toType) 来查看给定的实现是否支持给定的转换。 (2认同)