将 Blob 转换为 String 仅产生 Java 中的 Blob 对象名称
Converting Blob to String yields just the Blob object name in Java
我正在尝试从 MySQL 数据库中读取一个包含一些随机文本的 Blob。
我的代码如下所示:
Connection conn = DriverManager.getConnection(connection_string);
String message = "Some message";
byte[] messageBytes = message.getBytes("UTF-8");
Blob blob = conn.createBlob();
blob.setBytes(1l,messageBytes);
String sql = "INSERT INTO db.dbname('blob') VALUES ('" + blob + "');"
PreparedStatement pat = conn.prepareStatement(sql);
pat.executeUpdate();
在另一个 class 中,我有从数据库中读取 blob 字段的代码:
//some SQL code to read the blob field here
Blob readBlob = resultSet.getBlob("blob");
byte[] bytes = readBlob.getBytes(1, (int) readBlob.length());
String str = new String(bytes);
System.out.println(str);
输出为:com.mysql.cj.jdbc.Blob@3be81fc2
我的代码与 Whosebug 上的一些工作解决方案完全相同,所以我不知道到底哪里出了问题。
您在插入 时似乎犯了一个小错误。您的代码应该类似于:
String sql = "INSERT INTO db.dbname('blob') VALUES (?);"
PreparedStatement pat = conn.prepareStatement(sql);
pat.setBlob(1, blob);
pat.executeUpdate();
请对这些占位符使用准备好的语句。否则,攻击者可以轻松 运行 进行 SQL 注入攻击。如果您想了解 SQL 注入的工作原理,YouTube 上有一个很棒的 Computerphile 视频。
我正在尝试从 MySQL 数据库中读取一个包含一些随机文本的 Blob。
我的代码如下所示:
Connection conn = DriverManager.getConnection(connection_string);
String message = "Some message";
byte[] messageBytes = message.getBytes("UTF-8");
Blob blob = conn.createBlob();
blob.setBytes(1l,messageBytes);
String sql = "INSERT INTO db.dbname('blob') VALUES ('" + blob + "');"
PreparedStatement pat = conn.prepareStatement(sql);
pat.executeUpdate();
在另一个 class 中,我有从数据库中读取 blob 字段的代码:
//some SQL code to read the blob field here
Blob readBlob = resultSet.getBlob("blob");
byte[] bytes = readBlob.getBytes(1, (int) readBlob.length());
String str = new String(bytes);
System.out.println(str);
输出为:com.mysql.cj.jdbc.Blob@3be81fc2
我的代码与 Whosebug 上的一些工作解决方案完全相同,所以我不知道到底哪里出了问题。
您在插入 时似乎犯了一个小错误。您的代码应该类似于:
String sql = "INSERT INTO db.dbname('blob') VALUES (?);"
PreparedStatement pat = conn.prepareStatement(sql);
pat.setBlob(1, blob);
pat.executeUpdate();
请对这些占位符使用准备好的语句。否则,攻击者可以轻松 运行 进行 SQL 注入攻击。如果您想了解 SQL 注入的工作原理,YouTube 上有一个很棒的 Computerphile 视频。