欢乐连接:javascript在mysql中插入xml

时间:2012-08-01 11:19:20

标签: javascript mysql xml mirth

我是新手,java脚本,mysql的东西。 我已经在欢笑中设置了一个通道来读取文本文件并将其转换为xml。它工作正常。 我还尝试使用另一个通道中的数据库编写器将xml发送到mysql数据库。

这是javascript代码的样子

var dbConn = DatabaseConnectionFactory.createDatabaseConnection('com.mysql.jdbc.Driver','jdbc:mysql://192.168.1.4:3306/mirth','root','');
var result = dbConn.executeUpdate('INSERT INTO jon (xml) values ('1234')');
dbConn.close();

上面的代码在jon表中插入一条值为'1234'的记录。但是如何将通过源读取的xml:频道阅读器发送到数据库? 我试图用('+ messageObject.getEncodedData()+)或rawdata或transformeddata重新'1234'。他们都没有工作。我得到了以下错误:

ERROR (org.mule.impl.DefaultComponentExceptionStrategy:95) .... Wrapped com.mysql.jdbc.exceptions.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '<?xml version="1.0" encoding="UTF-8"?><delimited><row><column1>1234</column1><co' at line 1 (1cf6717f-4818-4b18-acb2-3b93079f2e95#7) .....

我的目的是在一个字段中编写整个xml,还不需要解析。 谢谢你的耐心。 janmohamamdi

1 个答案:

答案 0 :(得分:0)

您遇到的错误似乎是一个简单的语法问题。忘记欢乐一秒钟。通常,如果要将值插入到数据库中的字符字段中,则需要在插入的值周围使用单引号

INSERT INTO jon (xml) values ('1234') //single quotes around 1234

当您在Mirth中使用javascript创建查询时,您基本上复制了将在mysql中使用的相同查询 - 但是您将以编程方式将其构建为字符串。您基本上构建以下字符串并告诉javascript执行它:

"INSERT INTO jon (xml) values ('1234')" //single quotes around 1234

这意味着如果您有一个XML映射变量,则需要在查询字符串中用单引号将其包围,以便您的数据库知道您尝试插入的值。根据您的错误消息,这似乎是问题。如果您发布用于插入的实际代码,我可以查看。

    var xmlVar = $('XmlVar');  //fill a variable
    var query = "INSERT INTO testMRN (sendingfacility) VALUES ('" + xmlVar + "')";  //notice the quotes around the variable 
    var update= dbConn.executeUpdate(query);