私はvertx-mysql-postgresql-client-3.3.0とvertx-sql-common-3.3.0を使用しています 私は最初バッチ操作を使って(http://vertx.io/docs/vertx-sql-common/java/#_batch_operations)のような複数のステートメントは、vertx-mysql-postgres-clientでは実装されていません。複数のSqlクエリをVertx(Vert.x 3)で非同期に実行
デシベルにポストデータを処理するコードは次のとおりです。
SQLConnection sqlConnection;
List <JsonArray> targetParams = new ArrayList();
for (String key : targetObject.getTargets().keySet()) {
targetParams.add(new JsonArray().add(key).add(targetObject.getTargets().get(key)).add(targetObject.getId()));
}
int[] i = {targetObject.getTargets().size()};
while(i[0]>=0) {
sqlConnection.updateWithParams("INSERT INTO Targets (name, id,language) VALUES (?,?,?)", taglineParams.get(i[0] - 1), result ->
{
if (result.succeeded()) {
i[0]--;
}
else { badRequest(context, "Error inserting error code: " + result.cause().toString());
}
});
}
AsyncResultハンドラコード:
Handler<AsyncResult<SQLConnection>> sqlConnectionHandler = new Handler<AsyncResult<SQLConnection>>() {
@Override
public void handle(AsyncResult<SQLConnection> res) {
if (res.succeeded()) {
sqlConnection = res.result();
} else {
logger.error("Unable to create SQL connection: " + res.cause().toString());
}
}
};
この1つは仕事と最初に挿入した後、スレッドブロックされたエラーを与えていません。
どのように複数の挿入を動作させることができますか?
forループを使用すると、同じスレッドですでに問題が発生しています。 "INSERT INTO Targets(name、id、language)VALUES(?、?、?);(?、?、?);"、taglineParams、result - > ' のようなクエリは役に立ちますか? – dreamhigh