如题,数据存储为varbinary 更新时直接用一个数组当参数但是更新不进去,哪位给个明示

解决方案 »

  1.   

    这个存储二进制字符串
    mysql> desc vartest;
    +-------+----------------+------+-----+---------+-------+
    | Field | Type           | Null | Key | Default | Extra |
    +-------+----------------+------+-----+---------+-------+
    | blob1 | varbinary(100) | NO   |     |         |       |
    +-------+----------------+------+-----+---------+-------+
    1 row in set (0.00 sec)mysql> select md5('mysql');
    +----------------------------------+
    | md5('mysql')                     |
    +----------------------------------+
    | 81c3b080dad537de7e10e0987a4bf52e |
    +----------------------------------+
    1 row in set (0.00 sec)mysql> select blob1,hex(blob1) from vartest;
    Empty set (0.00 sec)mysql> insert into vartest values(unhex(md5('mysql')));
    Query OK, 1 row affected (0.05 sec)mysql> select blob1,hex(blob1) from vartest;
    +------------------+----------------------------------+
    | blob1            | hex(blob1)                       |
    +------------------+----------------------------------+
    | 伱皜谡7迆鄻zK? | 81C3B080DAD537DE7E10E0987A4BF52E |
    +------------------+----------------------------------+
    1 row in set (0.00 sec)
      

  2.   

    这样单纯的插入数据库是没问题,但是在程序中使用了。
    String str="testInsert";
    byte[] tempByte = new byte[str.getBytes("utf-8").length];
    PreparedStatement stmt = conn.prepareStatement("insert into tx(others) values(?)");
    stmt.setBytes(1, tempByte);
    stmt.execute();
    stmt.close();
    这样输入就会出问题。不能把正确的数据写入到数据库中
      

  3.   

    上面 有一句赋值没用弄上去
    System.arraycopy(str.getBytes("utf-8"), 0, tempByte, 0, str.getBytes("utf-8").length);