簡體   English   中英

Java MessageFormat - 如何在單引號之間插入值?

[英]Java MessageFormat - How can I insert values between single quotes?

我在使用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,它已經完成了您嘗試執行的操作(語法略有不同)。

對不起,如果這不是你在做什么,我只是想我會指出它。

String中 ,一對單引號可用於引用除單引號之外的任何任意字符。 例如,模式字符串"'{0}'"表示字符串"{0}" ,而不是FormatElement 單引號本身必須在整個String中用雙引號引用'' 例如,模式字符串"'{''}'"被解釋為'{ (引用開始和左大括號), '' (單引號)和}' (右大括號和結束)的序列引用), 而不是 '{''}' (引用左右花括號):表示字符串"{'}"而不是 "{}"

來自: MessageFormat(Java平台SE 8)

使用三重單引號字符:

MessageFormat messageFormat = "insert into {0} values ( '''{1}''', '''{2}''', '''{3}''', '''{4}''' )";

我想到的第一件事就是改變str1,str2,str3以獲得它們周圍的單引號。

Object[] args = { str0, "'" + str1 + "'", "'" + str2 + "'", "'" + str3 + "'", str4 };

然后,當然,從查詢字符串中刪除單引號。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM