簡體   English   中英

JavaScript中的SQL語句,其變量包含撇號

[英]SQL statements in javascript with variables that contains an apostrophe

我在Mirth Connect中有一個工作代碼(用於解析和調度HL7數據),該代碼通過jdbc將數據插入數據庫中。

Javascript用於生成適當的SQL語句。

一切正常,除非變量中帶有特殊字符(如撇號')

它將引發“查詢語法有錯誤”

var result = dbConn.executeUpdate(
"INSERT INTO Table (Column1, Column2) VALUES " 
+ "('"+ $('variable1')+ "'" 
+ ",'" + $('variable2')+ "'"
);

例如:如果variable1 =“ max”,則確定,但如果variable1 =“ m'ax”,則不是,否則確定

有沒有一種通用的方法(或最好的方法)如何處理所有禁止的字符並使SQL語句在每種情況下都可以使用?

預先感謝您的建議

[更新]

感謝您的建議。 我嘗試了這段代碼:

importPackage(java.sql);
importPackage(java.io);

// database connexion information

new com.filemaker.jdbc.Driver();
var dbConn = DriverManager.getConnection('jdbc:filemaker://localhost/MYDATABASE','login','pass');


var ps = dbConn.prepareStatement("insert into Ehealth_Incoming (ehealthin_document_id_root, ehealthin_document_code_displayName, ehealthin_document_title)  values (?,?,?) ");


// parameter 1

ps.setString(1,$('id_attRoot'));

// parameter 2

ps.setString(2,$('code_attDisplayname'));

// parameter 3

ps.setString(3,$('title'));

// do it

ps.executeUpdate();

// close

ps.close();
dbConn.close();

但是我收到“無效的參數綁定”錯誤。 知道我做錯了什么嗎? 謝謝。

[解決了]

語法代碼錯誤。 一切正常! 謝謝

您應該使用PreparedStatement,將查詢寫為

INSERT INTO Table (Column1,Column2) VALUES (?,?)

然后使用setString()方法將值設置為准備好的語句。

暫無
暫無

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

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