在插入值之前,有任何方法可以获得PreparedStatement接受的数据类型吗?
场景是我正在获取Excel (或OpenOffice)文档,我解析这些文档以将数据导入数据库。有时,如果是数字0,Excel中的单元格将为空。是否有一种从准备好的insert语句中获取列类型的方法,以确保必须解析该值的数据类型?
我认为,通过事先在表上运行select语句并查看ResultSet元数据,这是非常可能的。但如果可能的话我想绕开这件事。
发布于 2018-07-04 10:13:05
PreparedStatement不支持它。它将允许您设置任何数据类型,但是当您执行查询时,数据类型不匹配时您将得到SQLException。
最好的方法是使用系统目录视图来标识列数据类型,并相应地设置/派生值。
DB2拥有这个视图,SYSCAT.COLUMNS可以为您提供所需的信息。
发布于 2018-07-04 10:16:31
您可以从准备好的语句中获取参数元数据,其中包含参数数据类型。
ParameterMetaData metadata = preparedStatement.getParameterMetaData();
int type = metadata.getParameterType(col);Java文档getParameterMetaData()
https://stackoverflow.com/questions/51170982
复制相似问题