我尝试连接到MS SQL Server登台环境,但它显示
SQLException: The connection string contains a badly formed name or value
在哪里,我的密码包含 {
和 }
How to correctly escape the characters? 我的JDBC URL:
jdbc:sqlserver://localhost;databaseName=WHOPQDTB_test;integratedSecurity=false;user=WHOPQDTB_user;password='ahsdgahgsd';
我尝试使用不同的密码登录,并显示异常:
用户'WHOPQDTB_user'登录失败 .
请帮忙 . 提前致谢 .
1 回答
Microsoft Docs - Building the Connection URL
Escaping Values in the Connection URL
因此,更改密码或将用户/密码保存为单独的变量,并将其添加到Connection上 .
如果要使用属性集合,可以在此处找到属性名称:
Microsoft Docs - Setting the Connection Properties
java2s - Create Connection With Properties有一个很好的java示例 . 它适用于MySQL服务器,但您只需更改属性名称即可 . (来自上面的链接页面)
tl;dr 在源头潜水
SourceCode - DriverManager.java
使用
.getConnection(String url, String user, String password)
将创建Properties
条目 .mssql-jdbc代码
MSSQL-JDBC - SQLServerDriver.java
public java.sql.Connection connect(String Url, Properties suppliedProperties)
用途:
从给定的connectionUrl获取(额外)属性:
private Properties parseAndMergeProperties(String Url, Properties suppliedProperties)
正在使用:
在MSSQL- Util.java是交易破坏者 .
only way to bypass 这个Case-switch并直接进入"SQLServerConnection.java",是为了发送 proper Property Collection !
MSSQL-JDBC - SQLServerConnection.java
功能
Connection connect(Properties propsIn, SQLServerPooledConnection pooledConnection)
分别
Connection connectInternal(Properties propsIn, SQLServerPooledConnection pooledConnection)
: