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();
                    }

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

     

  • 相关阅读:
    java System.getProperty()参数大全
    元类(转自https://zhuanlan.zhihu.com/p/23887627)
    正则(高级)(转)
    正则(转)
    机器学习入门之房价预测(线性回归)
    python字节码(转)
    在虚拟机中搭建django,通过外网访问
    django框架入门
    linux下创建虚拟环境(转)
    PAT1005
  • 原文地址:https://www.cnblogs.com/fei-yu/p/9525415.html
Copyright © 2011-2022 走看看