Мне нужно сохранить SVG-изображения в таблице Google Cloud SQL (MySQL), а затем извлечь их, чтобы изменить некоторые значения атрибутов XML в скрипте приложений с помощью службы XML. Изображения хранятся на Диске. Сначала я пытался вставить изображения в db как строки, но я получил сообщение об ошибке: "Аргумент слишком велик". Итак, я попытался сделать то же самое, но отправил изображения как Blobs, которые, по-видимому, решили эту проблему, но когда я делаю запрос на извлечение капли, а затем преобразовываю их в строки, я получаю сообщение об ошибке: "Service Error: JdbcBlob". Мой код ниже, любая идея, что вызывает эту ошибку? Я уже прочитал документацию, но я не могу найти решение.
function xmlRead(){
var id = "some id";
var rawXml = DriveApp.getFileById(id).getBlob();
var params = {
ip: "some ip",
user: "some user",
password: "some password",
database: "some db"
}
var dbUrl = 'jdbc:mysql://' + params.ip + '/' + params.database;
var conn = Jdbc.getConnection(dbUrl, params.user, params.password);
var stmt = conn.createStatement();
var sql = "INSERT INTO pruebas_conexion_blob (datos) VALUES ('" + rawXml + "');";
var results = stmt.executeUpdate(sql);
var sql_blob = "SELECT * FROM pruebas_conexion_blob WHERE id = (SELECT MAX(id) FROM pruebas_conexion_blob)";
var results = stmt.executeQuery(sql_blob); //type jdbcresultset
while (results.next()) {
var results_blob =
results.getBlob('datos').getAppsScriptBlob().getDataAsString(); //error happens on this line
}
var xml = XmlService.parse(results_blob);
return xml;
}
Кстати, это мой первый пост в Stackoverflow, если я нарушаю правило, пожалуйста, дайте мне знать.
Я решил свою проблему, вот код:
function xmlRead(){
var id = "some id";
var rawXml = DriveApp.getFileById(id).getBlob().getBytes();
var params = {
ip: "some ip",
user: "some user",
password: "some password",
database: "some db"
}
var dbUrl = 'jdbc:mysql://' + params.ip + '/' + params.database;
var conn = Jdbc.getConnection(dbUrl, params.user, params.password);
var stmt = conn.createStatement();
var statement = conn.prepareStatement("INSERT INTO pruebas_conexion_blob (datos) VALUES (?)");
statement.setBytes(1, rawXml);
var results = statement.executeUpdate();
var consulta = "SELECT datos FROM pruebas_conexion_blob WHERE id = (SELECT MAX(id) FROM pruebas_conexion_blob)";
results = stmt.executeQuery(consulta);
while (results.next()) {
var results_string = results.getString('datos');
}
results.close();
stmt.close();
statement.close();
var xml = XmlService.parse(results_string);
return xml;
}