NutzCN Logo
精华 我看到有动态表名,我想问有没有动态字段名
发布于 3379天前 作者 qingqing519417@126.com 3324 次浏览 复制 上一个帖子 下一个帖子
标签: dao

如果没有动态字段名,请问dao.insert(map);这种方法,怎么insert一个blob字段?谢谢
1.png

12 回复

试试传个InputStream

3.png
是这样写吗,可是报错了
2.png

表结构发一下

这个表的表名和字段名都是动态生成的,字段类型肯定是不变的
create table ZT_FILE
(
id VARCHAR2(60),
filecontent CLOB
)

ok, 我弄个环境看看哪里的问题

mysql 测试代码如下

    @Test
    public void test_map_blob() {
        if (dao.exists("t_test_map_blob")) {
            dao.drop("t_test_map_blob");
            Lang.quiteSleep(1000);
        }
        dao.execute(Sqls.create("create table t_test_map_blob(id VARCHAR(60),filecontent blob)"));
        
        NutMap map = new NutMap().setv(".table", "t_test_map_blob");
        map.put("id", R.UU32());
        map.put("filecontent", new ByteArrayInputStream("你好".getBytes()));
        
        dao.insert(map);
        
        Record re = dao.fetch("t_test_map_blob", Cnd.NEW());
        assertNotNull(re);
        System.out.println(re.get("filecontent").getClass());
        System.out.println(new String((byte[])re.get("filecontent")));
        
        assertEquals("你好", new String((byte[])re.get("filecontent")));
    }

看来这个markdown库对github的代码块识别有问题, 得查查

我把代码贴这里了

https://nutz.cn/s/c/x

2个字是可以insert,但是大文件就不行了,麻烦再给看看

mysql 用blob类型, 插入64kb以下文件正常, 更大的文件需要用LONGBLOB等类型了.

QQ图片20150923113551.png

Oracle 用oracle_ojdbc6.jar 也是正常的

可以了,我把字段建成clob了,应该是blob,我的错,感谢wendal的耐心解答。感谢感谢!!!!

添加回复
请先登陆
回到顶部