![](/img/trans.png)
[英]How To Write A Parameterized Query With @databricks/sql To Hive
[英]How to update SQL with Parameterized Query?
我有這個 SQL 聲明:
var sql = UPDATE tableName SET ? = ? WHERE ? = ?";
db.query(
sql,
[asset.getColOne(), asset.getValOne(), asset.getColTwo(), asset.getValTwo()],
callback
);
和
{
"colOne": "colName",
"valOne": 1,
"colTwo": "colName",
"valTwo": 0
}
但是當我嘗試執行它時,出現語法錯誤,指出我的 SQL 語句是:
錯誤代碼:1064。您的 SQL 語法有誤; 查看與您的 MariaDB 服務器版本對應的手冊,了解在第 1 行的 ''colName' = 1 WHERE 'colName' = 0' 附近使用的正確語法
有什么方法可以指定列名或克服單引號嗎? 謝謝
您不能將表名或列名作為參數傳遞給查詢。 准備好的語句機制旨在傳遞文字值,而不是此類元數據。
在這里,您需要使用字符串連接:
var sql = "UPDATE tableName SET `" + asset.getColOne() + "` = ? WHERE `" + asset.getColTwo() + "` = ?";
db.query(sql, [asset.getValOne(), asset.getValTwo()], callback);
請注意,我在表名和列名周圍添加了反引號,以防它們作為未加引號的標識符無效。
但是請記住,如果變量來自您的代碼外部,使用這種技術會打開您的代碼以進行 SQL 注入。 如果是這樣,那么您需要在連接查詢之前手動驗證列名(例如,通過根據固定的值列表檢查它們)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.