javascript - javascript 中带有包含撇号的变量的 SQL 语句

标签 javascript sql mirth-connect

我在 Mirth Connect 中有一个工作代码(用于解析和分派(dispatch) HL7 数据),它通过 jdbc 将数据插入数据库。

Javascript 用于生成适当的 SQL 语句。

一切工作正常,除非变量中有特殊字符,例如撇号'

它抛出“查询语法中有错误”

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

例如:如果variable1 =“max”则OK,但如果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();

但我收到“参数绑定(bind)无效”错误。知道我做错了什么吗?谢谢。

[已解决]

存在语法代码错误。 一切正常!谢谢

最佳答案

您应该使用PreparedStatement,将查询编写为

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

然后使用 setString() 方法将值设置为准备好的语句。

关于javascript - javascript 中带有包含撇号的变量的 SQL 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51801501/

相关文章:

javascript - JavaScriptSerializer 期间 ASP.NET MVC AngularJS 中的 MaxJsonLength 异常

javascript - 悬停/淡入淡出/切换多个类更改

rest - Mirth 在一个端口上连接多个 HTTP 监听器 channel ?

mysql - 欢笑中的数据库到数据库的复制

ssl - Mirth connect 3.6开源不使用SSL管理器是否支持HTTP

javascript - 如何选择具有特定 ID 的 d3 svg 路径

javascript - 如何使用 JQuery 创建输入建议

c# - 仅检索循环引用(或父)记录的 LINQ 语句?

sql - 选择最近点的最有效方法

mysql - 如何使用一组记录的值列表中的值更新列