我在使用 java 从数据库中检索 blob 时遇到问题,得到的结果是一个正方形
这是我使用的代码:
package blobdatabase;
import java.nio.charset.Charset;
import java.sql.*;
/**
*
* @author Edson Lagamayo
*/
public class Main {
public static void main(String[] args) {
String returnValue = "";
try {
Connection con = null;
System.out.println("character set : " + Charset.defaultCharset());
Class.forName("com.mysql.jdbc.Driver").newInstance();
con = DriverManager.getConnection("jdbc:mysql://192.168.90.52/productiondb?useUnicode=true&characterEncoding=utf-8", "root", "root");
Statement st;
st = con.createStatement();
ResultSet resultSet = st.executeQuery("SELECT imgfilename,field7,field8,field9,field10,field11,field12,field13,field14,field15,field16,field17,field18,field19,field20,field21,field22,field23,remarks1,remarks2,remarks3,remarks4,remarks5,remarks6,remarks7,remarks8,remarks9,remarks10,remarks11,remarks12 FROM (SELECT MAX(stampid) stampid,orderid,projid,jobid,taskcode FROM tstasks t WHERE t.jobid=187 AND taskcode=1 GROUP BY t.orderid)t LEFT JOIN orderdetail od ON od.seqid=t.stampid AND od.orderid=t.orderid RIGHT JOIN imageinfo ii ON ii.orderid=od.orderid AND ii.projid=t.projid WHERE t.jobid=187;");
while (resultSet.next()) {
Blob blob = resultSet.getBlob("remarks7");
returnValue = blob != null ? new String(blob.getBytes(1, (int) blob.length())) : "";
System.out.println("returnValue : " + returnValue);
}
} catch (Exception ex) {
ex.printStackTrace();
}
}
}
我的输出是:
returnValue : ��4546345435435sdfaf4324324
returnValue : �
returnValue : sdafghbgjbgjnbhgnjbggbvrfsdfsdcvewr54trtgdfg���fdsjdgfdgdgfdfgdgsdafghbgjbgjnbhgnjbggbvrfsdfsdcvewr54trtgdfg���f
�� 有时是一个平方,其值是 ÑÑ 谁能帮我解决这个问题吗?请帮我解决我的问题
:)
This is the code I use:
package blobdatabase;
import java.nio.charset.Charset;
import java.sql.*;
/**
*
* @author Edson Lagamayo
*/
public class Main {
public static void main(String[] args) {
String returnValue = "";
try {
Connection con = null;
System.out.println("character set : " + Charset.defaultCharset());
Class.forName("com.mysql.jdbc.Driver").newInstance();
con = DriverManager.getConnection("jdbc:mysql://192.168.90.52/productiondb?useUnicode=true&characterEncoding=utf-8", "root", "root");
Statement st;
st = con.createStatement();
ResultSet resultSet = st.executeQuery("SELECT imgfilename,field7,field8,field9,field10,field11,field12,field13,field14,field15,field16,field17,field18,field19,field20,field21,field22,field23,remarks1,remarks2,remarks3,remarks4,remarks5,remarks6,remarks7,remarks8,remarks9,remarks10,remarks11,remarks12 FROM (SELECT MAX(stampid) stampid,orderid,projid,jobid,taskcode FROM tstasks t WHERE t.jobid=187 AND taskcode=1 GROUP BY t.orderid)t LEFT JOIN orderdetail od ON od.seqid=t.stampid AND od.orderid=t.orderid RIGHT JOIN imageinfo ii ON ii.orderid=od.orderid AND ii.projid=t.projid WHERE t.jobid=187;");
while (resultSet.next()) {
Blob blob = resultSet.getBlob("remarks7");
returnValue = blob != null ? new String(blob.getBytes(1, (int) blob.length())) : "";
System.out.println("returnValue : " + returnValue);
}
} catch (Exception ex) {
ex.printStackTrace();
}
}
}
the output i'm having is :
returnValue : ��4546345435435sdfaf4324324
returnValue : �
returnValue : sdafghbgjbgjnbhgnjbggbvrfsdfsdcvewr54trtgdfg���fdsjdgfdgdgfdfgdgsdafghbgjbgjnbhgnjbggbvrfsdfsdcvewr54trtgdfg���f
�� is sometimes a square the value for this would be ÑÑ
can anyone help me with this? please help me solve my problem
:)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
![扫码二维码加入Web技术交流群](/public/img/jiaqun_03.jpg)
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
...只是告诉驱动程序盲目地假设它是UTF-8。它不设置连接的字符编码。您应该在 mysql 配置中将默认字符集设置为 UTF-8,或者在连接后立即运行以下查询:
...only tells the driver to blindly assume it's UTF-8. It does NOT set the character encoding of the connection. You should set the default charset to UTF-8 in mysql config, or run the following query right after connection: