栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

BLOB与VARCHAR用于在MySQL表中存储数组

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

BLOB与VARCHAR用于在MySQL表中存储数组

像这样存储为BLOB(请参见下面的代码示例)。我认为这可能比使用Java序列化更好,因为Java的内置序列化将需要2427字节,并且非Java应用程序将很难处理数据。也就是说,将来是否应该有任何非Java应用程序查询数据库....否则,内置的序列化会少一些。

public static void storeInDB() throws IOException, SQLException {    double[] dubs = new double[300];    ByteArrayOutputStream bout = new ByteArrayOutputStream();    DataOutputStream dout = new DataOutputStream(bout);    for (double d : dubs) {        dout.writeDouble(d);    }    dout.close();    byte[] asBytes = bout.toByteArray();    PreparedStatement stmt = null;  // however we normally get this...    stmt.setBytes(1, asBytes);}public static double[] readFromDB() throws IOException, SQLException {    ResultSet rs = null;  // however we normally get this...    while (rs.next()) {        double[] dubs = new double[300];        byte[] asBytes = rs.getBytes("myDoubles");        ByteArrayInputStream bin = new ByteArrayInputStream(asBytes);        DataInputStream din = new DataInputStream(bin);        for (int i = 0; i < dubs.length; i++) { dubs[i] = din.readDouble();        }        return dubs;    }}

编辑:我希望使用BINARY(2400),但MySQL说:

mysql> create table t (a binary(2400)) ;ERROR 1074 (42000): Column length too big for column 'a' (max = 255);use BLOB or TEXT instead


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/392854.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号