2012-08-01 33 views
1

我是新來的歡樂,java腳本,mysql的東西。 我已經在歡樂中設置了一個閱讀文本文件並將其轉換爲xml的頻道。它工作正常。 我也嘗試使用另一個通道中的數據庫編寫器將xml發送到mysql數據庫。歡樂連接:在MySQL中的JavaScript inser xml

這是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(); 

上面的代碼中插入喬恩表中的記錄與「1234」的值。但是我怎樣才能將通過source:channel reader讀取的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

回答

0

您正在收到的錯誤使得它看起來像是一個簡單的語法問題。忘記歡樂一秒鐘。在一般情況下,如果你將值插入一個字符型字段中的數據塊,您需要在值單引號,你插入

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

當您在歡樂的JavaScript創建查詢時,你基本上覆制相同的查詢你會在mysql中使用 - 但是你正在以編程的方式將它構建爲一個字符串。你基本上建立了下面的字符串,並告訴javascript來執行它:

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

這意味着,如果你有一個XML映射的變量,你需要在查詢字符串中的單引號,這樣你的DB知道值將其包圍你正試圖插入。根據你的錯誤信息,這似乎是問題所在。如果您發佈您用於插入的實際代碼,我可以查看。

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);