1

私はmirth、javaスクリプト、mysqlのことを初めて使用します。テキストファイルを読み取ってxmlに変換するためのチャネルをmirthに設定しました。それはうまくいきます。また、別のチャネルでデータベースライターを使用して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();

上記のコードは、値が「1234」のレコードをjonテーブルに挿入します。しかし、source:channelリーダーを介して読み取ったxmlをデータベースに送信するにはどうすればよいですか?'1234'を('+ messageObject.getEncodedData()+)またはrawdataまたはtransformeddataで置き換えようとしました。それらのどれも機能しませんでした。次のエラーが発生します:

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全体を1つのフィールドに書き込むことであり、まだ解析は必要ありません。お待ちいただいてどうもありがとうございます。ジャンモハマムディ

4

1 に答える 1

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でマップされた変数がある場合は、挿入しようとしている値を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);
于 2012-08-01T14:56:14.410 に答える