zoukankan      html  css  js  c++  java
  • Oracle 特殊字符保存到数据库中变成问号的解决方案

    说明:用的Oracle 11g 数据库      最近在做的一个需求,版权信息要保存到数据库中,“CopyRight©****公司”  而保存到数据库就变成了“CopyRight?****公司”,

    版权字段类型用的是VARCHAR2、CLOB 都试过了,还是变成问号。于是网上找了一下,解决了这个问题。

    1. 把数据库的字段的类型从CLOB改成NVARCHAR2。

    2. 程序保存数据库时要注意字段前面必须加N‘*******’,如:insert into tb (col) values(N'中文') 

    先测试一下这个sql  我用的update执行的 是可以得

     3、放到代码中,刚开始,我是在mybatis  update语句中直接加了N 

    set FOOT_COPYRIGHT = N#{footCopyright,jdbcType=NVARCHAR}

    测试的时候,就会抛异常,映射异常,异常信息如下:

    Caused by: org.apache.ibatis.type.TypeException: Could not set parameters for mapping: ParameterMapping{property='settingStatus', mode=IN, javaType=class java.lang.Object, jdbcType=VARCHAR, numericScale=null, resultMapId='null', jdbcTypeName='null', expression='null'}. Cause: org.apache.ibatis.type.TypeException: Error setting non null for parameter #10 with JdbcType VARCHAR . Try setting a different JdbcType for this parameter or a different configuration property. Cause: org.apache.ibatis.type.TypeException: Error setting non null for parameter #10 with JdbcType VARCHAR . Try setting a different JdbcType for this parameter or a different configuration property. Cause: java.sql.SQLException: 无效的列索引

    然后把前边的N去掉试了一下,就可以了,最终

    set FOOT_COPYRIGHT = #{footCopyright,jdbcType=NVARCHAR}

    参考原文:https://www.cnblogs.com/jara/p/3734748.html

  • 相关阅读:
    Docker 部署net5程序
    如何将Docker升级到最新版本
    IntelliJ IDEA修改maven默认仓库地址
    PowerDesigner 导出表结构 到Excel
    gradle加载项目过慢
    linux安装docker配置阿里云镜像
    svn 新建文件不能直接提交终于解决了
    Vs2017 NPM 安装 部署
    MYSQL日期时间字符串互转
    消除svn选定(checkout)桌面上文件显示一大堆问号。
  • 原文地址:https://www.cnblogs.com/xuchao0506/p/15744024.html
Copyright © 2011-2022 走看看