T-SQL 语句插入中文数据时数据库显示全是问号“???”的解决方法(数据库编码规则)

 

病症表现为:主要表现为用 T-SQL 语句插入中文数据时数据库显示全是问号“???”
解决办法:
第一种办法:先选中出错的数据库→选中以后右键点击属性会弹出数据库属性 对话框→选中数据库属性对话框中的选项→把选项中的排序规则设置成:Chinese_PRC_90_CI_AS→最后点击确定即可。(注意:在选择数据库属性的时候必须确保你所修改的数据库未被使用才可以修改否则会失败的)
第二种办法:首先打开你的sql查询分析器(新建查询),然后输入以下代码执行即可:
 
ALTER DATABASE 数据库名 COLLATE Chinese_PRC_90_CI_AS
解析原因:出现以上情况主要是因为数据库属性的排序规则设置不正确,在Microsoft SQL Server 2005 中,字符串的物理存储由排序规则控制。排序规则指定表示每个字符的位模式以及存储和比较字符所使用的规则。
排序规则名称由两部份构成,前半部份是指本排序规则所支持的字符集。如:
  Chinese_PRC_90_CI_AS
前半部份:指UNICODE字符集,Chinese_PRC_指针对大陆简体字UNICODE的排序规则。
排序规则的后半部份即后缀 含义:
  _BIN 二进制排序
  _CI(CS) 是否区分大小写,CI不区分,CS区分
  _AI(AS) 是否区分重音,AI不区分,AS区分   
  _KI(KS) 是否区分假名类型 KI不区分,KS区分 
  _WI(WS) 是否区分宽度 WI不区分,WS区分 

区分大小写:如果想让比较将大写字母和小写字母视为不等,请选择该选项。
区分重音:如果想让比较将重音和非重音字母视为不等,请选择该选项。如果选择该选项,比较还将重音不同的字母视为不等。
区分假名:如果想让比较将片假名和平假名日语音节视为不等,请选择该选项。
区分宽度:如果想让比较将半角字符和全角字符视为不等,请选择该选项(完)。

在IntelliJ IDEA中,如果你的代码运行正常但是数据库插入数据显示为"?",这通常表示出现了数据绑定或SQL字符串格式的问题。以下是几种可能的原因及解决方法: 1. **未设置正确的数据库连接**: 确保你在代码中配置了正确的数据库驱动、URL、用户名和密码。检查`DataSource`或`JDBC Connection`是否配置正确。 2. **SQL注入**: 使用预编译语句(PreparedStatement)或参数化查询能避免这种问题。如果直接拼接字符串,可能会将变量值当作SQL文本处理,造成数据无法正确插入。 示例: ```java String sql = "INSERT INTO table (column) VALUES (?)"; PreparedStatement pstmt = connection.prepareStatement(sql); pstmt.setString(1, value); // 将value替换为实际数据 pstmt.executeUpdate(); ``` 3. **数据类型转换错误**: 检查传入数据库数据类型是否与表列匹配。例如,如果你试图插入一个字符串到需要数值类型的字段,可能会显示问号。 4. **空值处理**: 如果你的值为null,某些数据库系统会自动插入NULL,而不是问号。检查你的代码是否忽略了对null值的处理。 5. **日志查看**: 查看应用服务器的错误日志,有候问题可能是由日志输出导致的误读。 6. **数据库问题**: 如果其他操作也遇到同样的问题,可能是数据库本身的问题,如编码冲突或者权限不足等。确认数据库状态正常并且有相应的写权限。 针对以上情况,一一排查并修正即可。如果问题仍然存在,请提供具体的代码片段以便进一步分析。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值