Java MessageFormat - 如何在单引号之间插入值?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (34)

我遇到了使用java.text.MessageFormat对象的问题。

我试图创建SQL插入语句。问题是,当我做这样的事情时:

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。

提问于
用户回答回答于

我只是试过双引号,它对我很好:

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 )

这是你需要的吗?

用户回答回答于

对不起,如果这不在身边,但看起来你正在试图复制已经在JDBC中的PreparedStatement。

如果你正在尝试创建SQL来针对数据库运行,那么我建议你看看PreparedStatement,它已经完成了你想要做的事情(使用稍微不同的语法)。

对不起,如果这不是你在做什么,我只是想我会指出。

扫码关注云+社区