【问题标题】:Data stored as blob but the length is different before and after storing it数据存储为 blob,但存储前后长度不同
【发布时间】:2012-07-15 15:51:59
【问题描述】:

我被这个问题困扰了好几天,没有解决这个问题的办法,所以需要寻求更高的权力寻求帮助。为了向 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”。为什么会这样?

【问题讨论】:

    标签: java android mysql tomcat6


    【解决方案1】:

    这是你的问题:

    sql = "insert into userdata (data)+"values ('"+b+"')";
    

    这不会正确地转义b。例如,b 中可能包含引号字符!您需要使用PreparedStatement 来构建您的sql,以便b 正确转义。

    另外,"data" != "sounddata"

    【讨论】:

    • 谢谢您的好心先生!这就是问题所在,如果我没有打自己,​​请原谅我,因为我注意到关于同一问题的类似帖子。 stackoverflow.com/questions/9430008/…
    猜你喜欢
    • 1970-01-01
    • 2014-08-24
    • 2016-08-30
    • 2019-05-01
    • 2011-04-18
    • 1970-01-01
    • 1970-01-01
    • 2017-12-14
    • 2018-01-11
    相关资源
    最近更新 更多