java - 使用变量作为 SET 值时,“where 子句”中的未知列“”
问题描述
String SQL_UPDATE = "UPDATE `club_juvenil` SET "+SET_MySQL+" = "+nuevo_valor.getText().toString()+" WHERE dni_competidor = "+wher_combo.getSelectedItem().toString()+" ";
你好。我正在尝试使用 Java 更新 MySQL 上的表,但在“where 子句”中出现错误 Unknown column '(value from wher_combo)'我正在尝试使用 SET 值中的变量从一个切换到另一个列(这是我决定这样做的主要原因),但是 WHERE 似乎正在将 wher_combo 值作为列读取,并且显然会导致错误,因为该列在表上不存在。
解决方案
假设这SET_MySQL
是该表中的有效列,则该语句应使用带引号的字符串,因为 user3088799 已经回答。
但是请注意,像这样将未知数据直接附加到 SQL 查询字符串是非常危险的,永远不应该这样做。您可以在此处阅读有关准备好的语句,它提供了一种将任意数据作为参数传递的安全方法。
另请参阅“Bobby Tables”XKCD 漫画中的 SQL 注入如何工作?和Java - 转义字符串以防止 SQL 注入
推荐阅读
- regex - 将键/值对与注释匹配
- powerbi - DAX 计算列,如果每天和每个产品 ID 位于前 N 个中,则设置一个标志
- javascript - 为了做“标记模板”,我不能传递一个返回模板文字作为参数的变量,这是真的吗?
- c# - 尝试连接时来自 Azure Vault 的 GetSecret 抛出 NullReferenceException
- html - CSS背景层错误
- javascript - Redux + Typescript -> 错误:不可草拟值上的 case reducer 不得返回未定义的 redux
- excel - 直方图的 Excel VBA 宏运行时错误“1004”
- json - NiFi JsonRecordSetWriter 跳过嵌套字段
- tfsbuild - 找出有多少用户正在使用/创建 TFS 构建
- c - 大会堂 %50 - %50