我已经被这个问题困扰了好几天,并且没有解决这个问题的办法,所以需要寻求更高的权力来寻求帮助。为了将数据发送到 apache tomcat servlet,我有这个:
temp = items.get(4);
Blob b = connection.createBlob();
byte [] byteArray = null;
byteArray = temp.get();
b.setBytes(1, byteArray);
sql = "insert into userdata (data)+"values ('"+b+"')";
s = connection.createStatement();
s.execute(sql);
out.println("Data successfully uploaded!");
为了从 servlet 接收数据,我有这个:
Blob b = connection.createBlob();
//String data = null;
byte [] buffer;
temp = items.get(1);
String comments = temp.getString();
System.out.println(comments);
sql = "select sounddata from userdata where comments = '"+comments+"'";
s = connection.createStatement();
s.executeQuery(sql);
rs = s.getResultSet();
while (rs.next ())
{
b = rs.getBlob("data");
}
buffer = b.getBytes(1, (int)b.length());
System.out.println("AFTER:"+b.length());
System.out.println("FILE:"+b);
但是,在我插入 mysql 数据库之前和之后,我的 blob 长度是不同的。我有一个 34912 的 blob 长度,但是当我检索它时,它只有 27!这里可能是什么问题?
我将错误追溯到 blob 的差异。将 blob 插入数据库时,blob 值为“com.mysql.jdbc.Blob@2db19d”,但当我检索它时变为“com.mysql.jdbc.Blob@14d7745”。为什么呢?