zoukankan      html  css  js  c++  java
  • oracle Clob 存储超长字符

       遇到过一些比较奇葩的需求,对应奇葩的需求,所以就产生了一些奇葩的解决方案:

     1)Sql Insert 时,字符中字符串不能含有单引号,否则就引起数据库插入错误

      例:在处理一个错误机制时,需要保存该API请求的Url,如果该字段为字符串 insert时单引号将会报错。

                    所以用了一个比较笨的办法,编译,将单引号编译成两个单引号,使用的时候编译回来 Url.Replace("'", "''");

        

        2)需要存储很大数量的字符串,而字符的数据量并不受我们控制,必须是来者不拒,像varchar2 varchar 对字符存储是有限制的,并不符合需求,只有Clob 类型可以满足我们的需求。

      但是Clob 有一个问题就是,字符超过4000就会出现报错,字符长度过长,虽然这个字符储存量非常大,但是需要进行处理。

      在网上找到两种解决方案,一种使用参数的形式来,但是我不想使用函数或者是储存过程,一种是拼接Update,就直接淘汰掉

      使用了另外一种方法:

       :req  类似于一个占位符
    string strSql = string.Empty;
                OracleConnection con = new OracleConnection(conn);
                try
                {
                    if (string.IsNullOrEmpty(request))
                    {
                        request = " ";
                    }
    
                    strSql = @"insert into ""TableName""(""id"",""request"")
                               values ('{0}',:req)";
                    strSql = string.Format(strSql, id);
    
                    if (con.State == ConnectionState.Closed)
                    {
                        try
                        {
                            con.Open();
                        }
                        catch (Exception e)
                        {
                            throw e;
                        }
                    }
                    string sqlText = strSql;
                    using (OracleCommand cmd = new OracleCommand(sqlText, con))
                    {
                        OracleParameter oracleParameter1 = new OracleParameter("req", OracleType.Clob);
                        oracleParameter1.Value = CommonUtil.FilteSQLStr(request);
                        cmd.Parameters.Add(oracleParameter1);
    
                        cmd.ExecuteNonQuery();
                    }

    这样就可以解决这个问题了

     

  • 相关阅读:
    nacos 命名空间
    Error Code: 1175. You are using safe update mode and you tried to update a table without a WHERE that uses a KEY column. To disable safe mode, toggle the option in Preferences
    gitee
    maven引入junit 4.12,项目import org.junit.Test 还是报错.
    gitflow
    202011
    idea 忽略显示不需要的文件
    服务熔断 & 降级区别
    各种微服务框架对比
    zookeeper not connected
  • 原文地址:https://www.cnblogs.com/fei-yu/p/9525415.html
Copyright © 2011-2022 走看看