我在使用java.text.MessageFormat对象时遇到了问题。
我正在尝试创建SQL insert语句。问题是,当我这样做的时候:
MessageFormat messageFormat = "insert into {0} values ( '{1}', '{2}', '{3}', {4} )";
Object[] args = { str0, str1, str2, str3, str4 };
String result = messageFormat.format(args);
我得到这个是因为result
的值
"insert into <str0> values ( {1}, {2}, {3}, <str4> )"
正如您所看到的,问题是任何用单引号括起来的目标位置都不会被参数替换。我试过使用这样的双单引号:''{1}''
和这样的转义字符:\'{1}\'
,但它仍然给出相同的结果。
编辑:我忘了说我也尝试过'''{1}'''
。结果是:"insert into <str0> values ( '{1}', '{2}', '{3}', <str4> )"
。它保留了原始的引号,但仍然没有插入值。
如何解决此问题?根据记录,我使用的是JDK 6u7。
发布于 2008-10-10 02:44:06
我只是尝试了双引号,对我来说效果很好:
MessageFormat messageFormat = new MessageFormat("insert into {0} values ( ''{1}'', ''{2}'', ''{3}'', {4} )");
Object[] args = {"000", "111", "222","333","444","555"};
String result = messageFormat.format(args);
结果是:
insert into 000 values ( '111', '222', '333', 444 )
这是你需要的吗?
发布于 2008-10-10 03:44:30
很抱歉,如果这有点离谱,但看起来您正在尝试复制JDBC中已经存在的PreparedStatement。
如果你想创建一个在数据库上运行的SQL,那么我建议你看看PreparedStatement,它已经完成了你想要做的事情(使用了稍微不同的语法)。
如果这不是您要做的,很抱歉,我只是想指出它。
发布于 2008-10-10 02:19:02
使用三个单引号字符:
MessageFormat messageFormat = "insert into {0} values ( '''{1}''', '''{2}''', '''{3}''', '''{4}''' )";
https://stackoverflow.com/questions/189889
复制相似问题