读取/写入数据库中的blob



我现在有一个数据库问题。数据库中有一个BLOB字段。BLOB是一个XML。在这个BLOB中,我必须更新XML。

然而,我不知道该怎么做。不幸的是,数据库不是我的强项。

到目前为止,我的方法是这样的:

public void UpdateCharacterData(long characterID, long oid, String name, String xmlData) {
String sql = "SELECT data FROM objstore WHERE obj_id=? AND namespace_int=? AND type=? AND name=?";
//String sql = "UPDATE data FROM objstore WHERE obj_id=? AND namespace_int=? AND type=? AND name=?";
try (PreparedStatement ps = queries.prepare(sql)) {
ps.setLong(1, characterID);
ps.setInt(2, 3);
ps.setString(3, "Player");
ps.setString(4, name);
try (ResultSet rs = queries.executeSelect(ps)) {
if (rs != null) {
while (rs.next()) {
String data = rs.getString("data");
Log.debug(data);
}
}
}           
} catch (SQLException ex) {
ex.printStackTrace();
Log.dumpStack("SQLException: " + ex);
}
}

因此,我必须完全读取BLOB并将其转换为XML。做出我的更改,然后把它们写回来。至少这是我的猜测。

我希望有人能进一步帮助我。

谢谢!

实际上并不是这样工作的。我现在已经用它读出了数据:

sqlxml = rs.getSQLXML("data");

尝试/捕获后继续:

Document xmlDoc = (Document)XMLConverter.ConvertStringToDocument(sqlxml);
if(xmlDoc == null) {
Log.error("xmlDoc is null.");
return;
}

这将是转换器:

public static Document ConvertStringToDocument(SQLXML sqlxml) {
try {  
InputStream binaryStream = sqlxml.getBinaryStream();
DocumentBuilder parser = DocumentBuilderFactory.newInstance().newDocumentBuilder();
Document doc = (Document)parser.parse(binaryStream);
return doc;
} catch (Exception ex) {
Log.error(ex.toString());
}
return null;
}

然而,我总是被弄糊涂。也不例外。

最新更新