2 回答
TA贡献1797条经验 获得超6个赞
如果 JDBC 驱动程序不支持您尝试使用的类型 - 它会尝试将其映射到支持的最接近的可能数据类型。如果它不能做到这一点 -SQLException
被抛出。
JDBC 只是一个用于处理数据库的接口。数据库可能不支持 API 的某些部分。在这种情况下会发生什么完全取决于驱动程序的实现。这对所有 JDBC 驱动程序都很常见。
TA贡献1796条经验 获得超4个赞
如您所知,每个 RDBMS 都会发布其 JDBC 实现,而 JDBC 会尝试将 Java 的数据类型映射到数据库的数据类型。如果没有合适的映射选项,JDBC 将抛出java.sql.SQLException: Invalid column type
.
根据 MySQL 的文档,它不支持,但IBM Informix和OracleJAVA_OBJECT
似乎支持它。
同时,如果你想插入一个 Java 对象到一个表中,你可以将它映射到BLOB
. 假设您使用以下命令创建了一个表:
CREATE TABLE java_objects (
id INT AUTO_INCREMENT,
name varchar(128),
object_value BLOB,
primary key (id));
您可以使用此示例代码插入您的对象。
public long insertAnObject(String className, Object javaObject)
{
int id = -1;
try
{
PreparedStatement preparedStatement = connection.prepareStatement("INSERT INTO java_objects(name, object_value) VALUES (?, ?)");
// set input parameters
preparedStatement.setString(1, className);
preparedStatement.setObject(2, javaObject);
preparedStatement.executeUpdate();
// get the generated key for the id
ResultSet resultSet = preparedStatement.getGeneratedKeys();
if (resultSet.next())
{
id = resultSet.getInt(1);
}
resultSet.close();
preparedStatement.close();
return id;
} catch (SQLException e)
{
e.printStackTrace();
}
return id;
}
添加回答
举报