JAVA SQL 将所有通配符分配为 null

标签 java sql prepared-statement wildcard

我当前返回了一个带有标记空值的字符串通配符的 SQL 字符串。我正在尝试找到一种方法将所有这些通配符值设置为空。环顾四周后,我发现了一个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”。 为什么不呢?

关于JAVA SQL 将所有通配符分配为 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30788567/

相关文章:

java - 在 java.nio2 中将路径设置为只读的正确方法

java - 覆盖服务器上的 .htaccess 文件

php - 如何在 MySQL 查询中编写 PHP 代码

sql - 此 SQL 'ORDER BY' 无法正常工作

mysql - 如何在 MySql 工作台中连接表?

php - 从 pdo 准备语句中的键值后数组循环 bindParam

java - 使用扩展类

java - Sqlite 数据库上下文 android

php - 在 mysqli 准备语句过程样式中获取最后插入的 id 的正确方法是什么?

mysql - 重命名表准备语句