同样的用户和密码,PL/SQL可以正常登录,C#程序却出现 ORA-1017 用户名/口令无效
ORA-1017: 用户名/口令无效; 登录被拒绝
一、出现症状
1、使用sqlplus和PL/SQL客户端连接正常
2、C#使用Oracle.DataAccess.Client 连接时,报上面的错误
二、原因
1、Oracle11G之前密码是不区分大小写的,从11G开始默认密码区分大小写
2、使用10G的ODP.NET时,会自动把密码转换成大写
三、解决办法
1、给连接字符串中密码使用加上引号,这样密码就不会转成大写了
2、换成11G客户端
3、修改数据库,禁用大小写敏感模式:ALTER SYSTEM SET SEC_CASE_SENSITIVE_LOGON = FALSE
因我的连接字符串是写在XML文件里,在XML文件里“引号”是需要转义的,现提供XML中常用的转义字符:
< | < | 小于号 |
> | > | 大于号 |
& | & | 和 |
' | ' | 单引号 |
" | " | 双引号 |