Query Parameters and Variable Column Names
In Java, using JDBC prepared statements, one may encounter a scenario where dynamic column names need to be specified in a query. Unfortunately, it is not possible to directly set column names as prepared statement values, as they expect column values instead.
Attempts to specify column names as values result in queries like:
SELECT a,b,c,'d,e,f' FROM some_table WHERE d='x'
The desired query, however, would be:
SELECT a,b,c,d,e,f FROM some_table WHERE d='x'
Solution and Considerations
It is advised against using variable column names in this manner as it can lead to database design issues and increase the risk of SQL injection vulnerabilities. Instead, consider creating a dedicated database column to hold these "column names" and store the data accordingly.
If you still require variable column names, a workaround is to sanitize the input, build the SQL string manually, quote the column names, and escape quotes within the names using String#replace(). Remember that this approach persists the potential for SQL injection vulnerabilities, so sanitization is crucial.
The above is the detailed content of How Can I Handle Dynamic Column Names in JDBC Prepared Statements?. For more information, please follow other related articles on the PHP Chinese website!