应该有专门的处理BLOB字段的SQL语句吧,比如:UPDATEBLOB 数据表 SET 字段名=数据值

解决方案 »

  1.   

    严重关注这个问题
    我写入的全是乱码,唯一的规律是前面有com.mysql.jdbc.Blob@的前缀
    但是在dos里直接对mysql操作却是对的
    十分不解……
      

  2.   


    PreparedStatement
    Blob
      

  3.   

    楼上的说的好象起不到作用啊
    不知道这个还能用java与mysql做开发吗
    我发现发这种问题的人不少啊,但是答的人都少的可怜,我把java和mysql的帮助文档都翻遍了,还没有想到解决办法
    我把我的代码拿出来,大家分析一下吧
    com.mysql.jdbc.Blob wordCo = (com.mysql.jdbc.Blob)wd.getWordCo();
    //这里wd是一个实物类,是由从数据库中取出的内容构成,它调用的方法返回一个blob
    System.out.println("wordCobefore:" + wordCo);
    //测试,显示的是乱码。不过,我存进去的时候就是乱码,下面想实现重新写入
    OutputStream out = wordCo.getOutputStream();
    //这句话我也不太懂,我想应该是对这个blob设置一个输出流,用来给它赋值
    InputStream in = new StringBufferInputStream(temp);
    //temp是一个string型数据,也就是我想存入blob的数据,这里将它赋值给输入流
    int c;
    while ( (c = in.read()) != -1) {
    out.write(c);
    }//传递值
    in.close();
    out.close();
    //这里没有转码,我用的是英文和数字做测试,发现以上的语句没有起任何作用
      

  4.   

    好想我没说清楚,我的blob字段是用来摆上传的文件的,我看过mysql中的sql里有LOAD_FILE东西,好像直接吧文件扔进去就可以了,可是我试了下,发现blob字段还是null,不知道为什么?
      

  5.   

    假设mail表中file字段是blob类型的
    把文件传到表中
    File imgFile=new File(filename);
    String sql="insert into mail(file) values(?);
    PreparedStatement pstmt=conn.prepareStatement(sql);
    pstmt.setBinaryStream(1,new FileInputStream(filename),(int)imgFile.length());
    pstmt.executeUpdate();
    当然,如果是直接把字符串放到表中的blob字段中,就直接用
    pstmt.setString(1,filename);
    就OK了
      

  6.   

    to zqq7231(黑影) 
    这里的filename指的是什么,是绝对路径的file(服务器还是本机的),还是相对路径的file。是不是先要将文件上传到服务器,然后再取得它的路径啊?
    等待大家的回答
      

  7.   

    谢谢zqq7231(黑影) ,我觉得还是应该向上传的啊,jsp运行在服务器的,他又不知道怎么解析你的路径的!