我有以下疑问:我能以某种方式将条件三元运算符用于字符串连接吗?
我正在尝试做这样的事情:
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";
这意味着在第一个String中继我希望连接由以下公式评估的值:
qsTirPF.getPolizzaid() != null ? qsTirPF.getPolizzaid() : "null";
但是Eclipse给我签了这个错误:
Type mismatch: cannot convert from Object&Comparable<?>&Serializable to String
为什么呢?怎么了?我该如何解决这个问题?
答案 0 :(得分:4)
首先,你应该把你的三元条件放在括号内:
(qsTirPF.getPolizzaid() != null ? qsTirPF.getPolizzaid() : "null")
此外,你应该验证qsTirPF.getPolizzaid()是否返回一个字符串
答案 1 :(得分:1)
你需要括号:
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");
答案 2 :(得分:1)
您可以使用括号告诉编译器您要与条件三元运算符的结果连接:
String sql = "insert into TirConsolidatoPolizzaFondo "
+ ...
+ ((getPolizzaid() != null)? qsTirPF.getPolizzaid() : "null");
这应该有用。
PS:您可以使用StringBuilder来构建查询,而不是使用+符号。效率更高。
答案 3 :(得分:-6)
你不应引用&#34; null&#34;!
而不是写
qsTirPF.getPolizzaid() != null ? qsTirPF.getPolizzaid() : "null";
尝试写作
qsTirPF.getPolizzaid() != null ? qsTirPF.getPolizzaid() : null;