JAVA SQL 将所有通配符赋值给 null
JAVA SQL assign all wildcards to null
我目前有一个 sql 字符串返回,其中字符串通配符标记空值。我试图找到一种方法将所有这些通配符值设置为 null。环顾四周后,我发现了一个 preparedStatement.setNull() 方法,但它需要一个索引,通配符的索引可能会发生变化。有没有办法克服这个问题? (下面给出的示例 sql 字符串):
String sqlCmd=
"INSERT INTO gs_support_structure (OBJECTID, gs_support_structure_gs_guid,
gs_support_structure_gs_vc_revision, gs_support_structure_gs_old_objectid,
gs_support_structure_gs_symbol_rotation, gs_support_structure_gs_subtype_cd,
gs_support_structure_gs_equipment_location, gs_support_structure_gs_map_no,
gs_support_structure_gs_substation, gs_support_structure_gs_description,
gs_support_structure_gs_height, gs_support_structure_gs_class,
gs_support_structure_gs_installation_date, gs_support_structure_gs_comments,
gs_support_structure_gs_date_created, gs_support_structure_gs_date_modified,
gs_support_structure_gs_diameter, gs_support_structure_gs_foundation_type,
gs_support_structure_gs_grounded, gs_support_structure_gs_manufacturer,
gs_support_structure_gs_material, gs_support_structure_gs_owner,
gs_support_structure_gs_pole_count, gs_support_structure_gs_style,
gs_support_structure_gs_treatment_type, gs_support_structure_gs_usage_type,
gs_support_structure_gs_old_layer_name,
gs_support_structure_gs_year_manufactured, gs_support_structure_gs_obj_no,
gs_support_structure_gs_prev_pole_id, gs_support_structure_gs_feeder_number,
gs_support_structure_gs_bec_substation,
gs_support_structure_gs_line_section, gs_support_structure_gs_facility_id,
gs_support_structure_gs_work_initiation_id,
gs_support_structure_gs_height_estimated,
gs_support_structure_gs_double_wood, gs_support_structure_gs_damaged,
gs_support_structure_gs_image_number, gs_support_structure_gs_x_coordinate,
gs_support_structure_gs_y_coordinate, gs_support_structure_gs_latitude,
gs_support_structure_gs_longitude, gs_support_structure_gs_gps_type,
gs_support_structure_gs_quality_value_meters,
gs_support_structure_gs_elevation_meters,
gs_support_structure_gs_construction_unit, gs_support_structure_gs_tag,
gs_support_structure_gs_tag_placed, gs_support_structure_gs_oldattachpole,
gs_support_structure_gs_poletopped, gs_support_structure_gs_polehazard,
gs_support_structure_gs_raptor, gs_support_structure_gs_groundpresent,
gs_support_structure_gs_test, gs_support_structure_gs_gpsdate,
gs_support_structure_gs_gpstime, gs_support_structure_gs_sriid,
gs_support_structure_gs_vc_modified_sw,
gs_support_structure_gs_ju_attached_fi,
gs_support_structure_gs_related_staking_guid,
gs_support_structure_gs_hyperlink, gs_display_feature_name, gs_guid) VALUES
('227', '{20731926-2A46-CDAC-547C-71226454977D}', '1099', '12202', '0.0',
'1', '1812', '571871874801', '9', ?, '40', '6', ?, ?, 'Thu Feb 25 17:25:19
CST 2010', 'Mon Feb 13 12:19:34 CST 2012', ?, ?, ?, ?, 'WOOD', 'BARTLETT',
?, ?, ?, 'PRI', ?, 'UNK', ?, ?, '03', 'Salty', ?, '1812', ?, 'Y', 'N', 'N',
?, '3293532.68888944', '1.021396693284668E7', '30.64895755', '-97.16239132',
?, ?, ?, ?, '106382', 'Y', 'N', 'N', 'NONE', 'NONE', 'Y', 'UNK', 'Fri Sep 04
00:00:00 CDT 2009', 'Sat Dec 30 10:24:13 CST 1899', '1812', ?, 'N', ?, ?,
'gs_support_structure', '{D63C9735-4632-7E71-726C-3248E8B25E44}')"
PreparedStatement preparedStatement =
spatialLiteConnection.prepareStatement(sqlCmd);
preparedStatement.execute();
JdbcUtil.close(preparedStatement);
我可以建议你在这种情况下不要使用 preparedStatement.setNull()(所以你的语句每次都会不同并且每次都会进行硬解析),但只需替换所有你的“?”在你的声明中 "NULL" 。
为什么不呢?
我目前有一个 sql 字符串返回,其中字符串通配符标记空值。我试图找到一种方法将所有这些通配符值设置为 null。环顾四周后,我发现了一个 preparedStatement.setNull() 方法,但它需要一个索引,通配符的索引可能会发生变化。有没有办法克服这个问题? (下面给出的示例 sql 字符串):
String sqlCmd=
"INSERT INTO gs_support_structure (OBJECTID, gs_support_structure_gs_guid,
gs_support_structure_gs_vc_revision, gs_support_structure_gs_old_objectid,
gs_support_structure_gs_symbol_rotation, gs_support_structure_gs_subtype_cd,
gs_support_structure_gs_equipment_location, gs_support_structure_gs_map_no,
gs_support_structure_gs_substation, gs_support_structure_gs_description,
gs_support_structure_gs_height, gs_support_structure_gs_class,
gs_support_structure_gs_installation_date, gs_support_structure_gs_comments,
gs_support_structure_gs_date_created, gs_support_structure_gs_date_modified,
gs_support_structure_gs_diameter, gs_support_structure_gs_foundation_type,
gs_support_structure_gs_grounded, gs_support_structure_gs_manufacturer,
gs_support_structure_gs_material, gs_support_structure_gs_owner,
gs_support_structure_gs_pole_count, gs_support_structure_gs_style,
gs_support_structure_gs_treatment_type, gs_support_structure_gs_usage_type,
gs_support_structure_gs_old_layer_name,
gs_support_structure_gs_year_manufactured, gs_support_structure_gs_obj_no,
gs_support_structure_gs_prev_pole_id, gs_support_structure_gs_feeder_number,
gs_support_structure_gs_bec_substation,
gs_support_structure_gs_line_section, gs_support_structure_gs_facility_id,
gs_support_structure_gs_work_initiation_id,
gs_support_structure_gs_height_estimated,
gs_support_structure_gs_double_wood, gs_support_structure_gs_damaged,
gs_support_structure_gs_image_number, gs_support_structure_gs_x_coordinate,
gs_support_structure_gs_y_coordinate, gs_support_structure_gs_latitude,
gs_support_structure_gs_longitude, gs_support_structure_gs_gps_type,
gs_support_structure_gs_quality_value_meters,
gs_support_structure_gs_elevation_meters,
gs_support_structure_gs_construction_unit, gs_support_structure_gs_tag,
gs_support_structure_gs_tag_placed, gs_support_structure_gs_oldattachpole,
gs_support_structure_gs_poletopped, gs_support_structure_gs_polehazard,
gs_support_structure_gs_raptor, gs_support_structure_gs_groundpresent,
gs_support_structure_gs_test, gs_support_structure_gs_gpsdate,
gs_support_structure_gs_gpstime, gs_support_structure_gs_sriid,
gs_support_structure_gs_vc_modified_sw,
gs_support_structure_gs_ju_attached_fi,
gs_support_structure_gs_related_staking_guid,
gs_support_structure_gs_hyperlink, gs_display_feature_name, gs_guid) VALUES
('227', '{20731926-2A46-CDAC-547C-71226454977D}', '1099', '12202', '0.0',
'1', '1812', '571871874801', '9', ?, '40', '6', ?, ?, 'Thu Feb 25 17:25:19
CST 2010', 'Mon Feb 13 12:19:34 CST 2012', ?, ?, ?, ?, 'WOOD', 'BARTLETT',
?, ?, ?, 'PRI', ?, 'UNK', ?, ?, '03', 'Salty', ?, '1812', ?, 'Y', 'N', 'N',
?, '3293532.68888944', '1.021396693284668E7', '30.64895755', '-97.16239132',
?, ?, ?, ?, '106382', 'Y', 'N', 'N', 'NONE', 'NONE', 'Y', 'UNK', 'Fri Sep 04
00:00:00 CDT 2009', 'Sat Dec 30 10:24:13 CST 1899', '1812', ?, 'N', ?, ?,
'gs_support_structure', '{D63C9735-4632-7E71-726C-3248E8B25E44}')"
PreparedStatement preparedStatement =
spatialLiteConnection.prepareStatement(sqlCmd);
preparedStatement.execute();
JdbcUtil.close(preparedStatement);
我可以建议你在这种情况下不要使用 preparedStatement.setNull()(所以你的语句每次都会不同并且每次都会进行硬解析),但只需替换所有你的“?”在你的声明中 "NULL" 。 为什么不呢?