SQL javascript 中的语句,变量包含撇号
SQL statements in javascript with variables that contains an apostrophe
我在 Mirth Connect 中有一个工作代码(用于解析和发送 HL7 数据),它通过 jdbc 将数据插入数据库。
Javascript 用于生成适当的 SQL 语句。
一切正常,除非变量中有特殊字符,如撇号 '
它抛出一个 "There is an error in the syntax of the query"
var result = dbConn.executeUpdate(
"INSERT INTO Table (Column1, Column2) VALUES "
+ "('"+ $('variable1')+ "'"
+ ",'" + $('variable2')+ "'"
);
例如:如果 variable1 = "max" OK 但如果 variable1 = "m'ax"
则不OK
是否有一种通用的方法(或最佳方法)来处理所有被禁止的字符并使 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();
但是我收到 "Invalid parameter binding(s)" 错误。知道我做错了什么吗?谢谢
[已解决]
存在语法代码错误。
一切正常!谢谢
您应该使用 PreparedStatement,将您的查询写为
INSERT INTO Table (Column1,Column2) VALUES (?,?)
然后使用 setString()
方法将您的值设置为准备好的语句。
我在 Mirth Connect 中有一个工作代码(用于解析和发送 HL7 数据),它通过 jdbc 将数据插入数据库。
Javascript 用于生成适当的 SQL 语句。
一切正常,除非变量中有特殊字符,如撇号 '
它抛出一个 "There is an error in the syntax of the query"
var result = dbConn.executeUpdate(
"INSERT INTO Table (Column1, Column2) VALUES "
+ "('"+ $('variable1')+ "'"
+ ",'" + $('variable2')+ "'"
);
例如:如果 variable1 = "max" OK 但如果 variable1 = "m'ax"
则不OK是否有一种通用的方法(或最佳方法)来处理所有被禁止的字符并使 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();
但是我收到 "Invalid parameter binding(s)" 错误。知道我做错了什么吗?谢谢
[已解决]
存在语法代码错误。 一切正常!谢谢
您应该使用 PreparedStatement,将您的查询写为
INSERT INTO Table (Column1,Column2) VALUES (?,?)
然后使用 setString()
方法将您的值设置为准备好的语句。