【发布时间】:2016-10-27 04:12:05
【问题描述】:
我有以下疑问:我能否以某种方式将条件三元运算符用于字符串连接?
我正在尝试做这样的事情:
String sql = "insert into TirConsolidatoPolizzaFondo "
+ "(Polizzaid, FondoID, isQuadraturaOk, ReteVendita, CodiceConferimento, PercentualeRendimentoDaInizioGestione, "
+ "DataInizioGestione, PercentualeRendimentoDaInizioAnno, DataInizioAnno, PercentualeRendimentoDaInizioTrimestre, "
+ "DataInizioTrimestre, DataCalcoloBF, ValoreNavBF, DataRiferimentoNavBF, ControvaloreFinaleBF, ValoreNavPUC, "
+ "DataRiferimentoNavPUC, ControvaloreFinalePUC, NumeroQuotePUC, DeltaControvaloreFinale, TIMESTAMP, "
+ "DataValutaUltimaOperazione, MsgPercentualeRendimentoDaInizioAnno, MsgPercentualeRendimentoDaInizioGestione, "
+ "MsgPercentualeRendimentoDaInizioTrimestre, isTirAnomalo, CodiceLineaBF) "
+ "values"
+ "(" +
qsTirPF.getPolizzaid() != null ? qsTirPF.getPolizzaid() : "null";
这意味着在第一个字符串主干上,我想连接由以下评估的值:
qsTirPF.getPolizzaid() != null ? qsTirPF.getPolizzaid() : "null";
但是 Eclipse 给我签名这个错误:
Type mismatch: cannot convert from Object&Comparable<?>&Serializable to String
为什么?怎么了?我该如何解决这个问题?
【问题讨论】:
-
你试过在三元表达式周围加上括号吗?
... + (qsTirPF.getPolizzaid() != null ? qsTirPF.getPolizzaid() : "null"); -
您还确定要使用字符串连接来提供 SQL 查询参数吗?通常避免使用 Bobby Tables 的首选方法是使用 PreparedStatement 并使用其
setXYZ方法。 -
请注意,这是 2016 年;帮自己一个忙,使用准备好的语句来避免潜在的 SQL 注入。
-
无论如何我无法重现这个确切的问题。您能否发布正确的SSCCE / minimal reproducible example,这将允许我们简单地将您的示例复制到我们的 IDE 并得到相同的错误?
标签: java conditional ternary-operator