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}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)