解析数据库连接串(Connection String / DSN)通常是指把一个形如
jdbc:mysql://localhost:3306/test?user=root&password=123456
或
Server=localhost;Database=test;User Id=root;Password=123;
的字符串,拆解出协议、主机、端口、数据库名、用户名、密码、参数等信息。
下面按「常见格式 → 解析思路 → 示例代码」来说明。
jdbc:mysql://host:port/dbname?user=xxx&password=yyy&useSSL=false
结构:
jdbc:mysqlhostportdbnamekey=valueServer=127.0.0.1;Port=5432;Database=test;User Id=admin;Password=pass;
结构:
; 分隔key=valuepostgresql://user:pass@host:5432/dbname
结构:
判断类型
jdbc: 开头://key=value 格式拆分结构
URL 解码(如有特殊字符)
import java.net.URI;
import java.util.*;
public class ConnParser {
public static void main(String[] args) throws Exception {
String url = "jdbc:mysql://localhost:3306/test?user=root&password=123456";
URI uri = new URI(url.substring(5)); // 去掉 jdbc:
System.out.println("Host: " + uri.getHost());
System.out.println("Port: " + uri.getPort());
System.out.println("DB: " + uri.getPath().substring(1));
String query = uri.getQuery();
for (String pair : query.split("&")) {
String[] kv = pair.split("=");
System.out.println(kv[0] + " = " + kv[1]);
}
}
}
from urllib.parse import urlparse, parse_qs
url = "postgresql://user:pass@localhost:5432/test"
parsed = urlparse(url)
print(parsed.scheme)
print(parsed.username)
print(parsed.password)
print(parsed.hostname)
print(parsed.port)
print(parsed.path[1:])
var conn = "Server=localhost;Database=test;User Id=root;Password=123;";
var dict = conn.Split(';')
.Select(x => x.Split('='))
.ToDictionary(x => x[0].Trim(), x => x[1].Trim());
Console.WriteLine(dict["Server"]);
Console.WriteLine(dict["Database"]);
⚠ 安全
⚠ 特殊字符
@ : / 需 URL 编码⚠ 不同数据库差异
jdbc:oracle:thin:@host:port:SIDjdbc:sqlserver://host;databaseName=db如果你有具体的连接串(MySQL / Oracle / SQL Server / PG),
我可以直接帮你逐段解析或写针对性代码。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。