簡體   English   中英

主動脈中的轉義字符串插值

[英]Escape string interpolation in anorm

我想使用anorm 2.5.2將文字'${a}'插入表中,這意味着我想執行裸SQL查詢

INSERT INTO `db`.`table` (`a`) VALUES ('${a}');

無需使用任何定理/字符串插值。 當我嘗試執行以下操作時

SQL("INSERT INTO `db`.`table` (`a`) VALUES ('${a}');").execute()

我得到anorm.Sql$MissingParameter: Missing parameter value異常,因為它試圖在${a}上使用anorm插值,但是范圍中沒有可用的值a

如何逃避主動脈/字符串插值$...${...}

在字符串內插轉義美元符號似乎在這里不起作用。

您可以使${a}為參數的值,即

SQL("""INSERT INTO db.table (a) VALUES ({x})""").on("x" -> s"$${a}")

s"$${a}"是寫"${a}"不會收到有關可能缺少內插器的警告)。

可以等同地寫成

val lit = s"$${a}"
SQL"""INSERT INTO db.table (a) VALUES ($lit)"""

以下可能會起作用,但我不確定:

SQL"INSERT INTO db.table (a) VALUES ('$${a}')"

也許還應該問一下它是故意的行為還是一個錯誤:當談論參數化的SQL查詢時, '包含參數是沒有意義'

暫無
暫無

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

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