oracle的insert语句clob,.Net 操作 Oracle CLOB类型字段 INSERT 超长数据

如果仅仅在数据库中设置了类型为 CLOB 字段类型,使用普通的 INSERT 语句直接写入数据到数据库的话,它依然会将其视为 VARCHAR 类型数据,并最大长度为 4000 字符。超过该长度会报出字符串超长,写入数据失败的错误。

使用 Dapper 处理 CLOB 数据 INSERT

代码如下:

OracleConnection cnn = new OracleConnection("..数据库链接字符串..");

cnn.Open();

string content = "假定超过4000的超长字符串";

byte[] newValue = Encoding.Unicode.GetBytes(content); //这里一定要使用 Unicode 字符编码

OracleClob p_content = new OracleClob(cnn);

p_content.Write(newValue, 0, newValue.Length);

string sql = "INSERT INTO TABLE(CONTENT) VALUES(:content)";

DynamicParameters parameter = new DynamicParameters();

parameter.Add("content", p_content);

cnn.Execute(sql, parameter);

cnn.Close();

其实跟 Dapper 也没多大关系,在 .Net 中的 Oracle CLOB 需要以上特殊处理下,否则 Dapper 会将其视为普通字符串类型写入。

敲重点,如何 UPDATE CLOB 字段类型的数据

本来没有这一节文章内容的,我认为像 INSERT 同样的方式创建 SQL 参数传入就好了。实际上并不是,UPDATE 需要跟以往同样的方式,直接 string 传参就可以了,以下参考:

OracleConnection cnn = new OracleConnection("..数据库链接字符串..");

cnn.Open();

string content = "假定超过4000的超长字符串";

string sql = "UPDATE TABLE SET CONTENT = :content WHERE ID = :id";

DynamicParameters parameter = new DynamicParameters();

parameter.Add("id", 10001);

parameter.Add("content", content);

cnn.Execute(sql, parameter);

cnn.Close();

你没看错,它不需要再转换为 OracleClob 对象参数了,转换了反而会报错。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值