java ssh链接数据库

本文介绍了一种根据产品名称和SSH标志获取数据库配置的方法,并实现了通过SSH隧道或直接连接来建立数据库连接的过程。文中详细解释了如何使用JSch进行SSH连接设置及通过BasicDataSource配置数据源。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

public static QueryRunner getQueryRunnerByDbConfig(String productName, Integer isSSH, Integer type) {
// 判断是否是ssh连接数据库:1 是SSH连接 0 不是ssh连接
List<DBconfig> dbConfiglist = queryDBconfigS(isSSH, productName, type);
if (dbConfiglist.size() > 0) {
for (DBconfig dBconfig : dbConfiglist) {


String ruser = dBconfig.getRuser();
String rpassword = dBconfig.getRpassword();
String rhost = dBconfig.getRhost();
int rport = dBconfig.getRport();
String dbname = dBconfig.getDbname().trim();


if (isSSH > 0 && isSSH == 1) {
String shost = dBconfig.getShost();
String suser = dBconfig.getSuser();
String spassword = dBconfig.getSpassword().trim();
int sport = dBconfig.getSport();
int port = dBconfig.getPort();
// ssh连接
try {
JSch jsch = new JSch();
Session session = jsch.getSession(suser, shost, sport);
session.setPassword(spassword);
session.setConfig("StrictHostKeyChecking", "no");
session.connect();
int assinged_port = session.setPortForwardingL(port, rhost, rport);
System.out.println("localhost:" + assinged_port + " -> " + rhost + ":" + rport);
} catch (Exception e) {
System.out.println(e);
}


if (DBUtil.dataSource == null) {
BasicDataSource dbcpDataSource = new BasicDataSource();
String url = "jdbc:mysql://localhost:" + port + "/" + dbname + "?useUnicode=true&characterEncoding=UTF-8";
dbcpDataSource.setUrl(url);
dbcpDataSource.setDriverClassName("com.mysql.jdbc.Driver");
dbcpDataSource.setUsername(ruser);
dbcpDataSource.setPassword(rpassword);
dbcpDataSource.setDefaultAutoCommit(true);
dbcpDataSource.setMaxActive(100);
dbcpDataSource.setMaxIdle(30);
dbcpDataSource.setMaxWait(500);
DBUtil.dataSource = (DataSource) dbcpDataSource;
}


} else {
System.out.println("非SSSH连接");
if (DBUtil.dataSource == null) {
BasicDataSource dbcpDataSource = new BasicDataSource();
String url = "jdbc:mysql://" + rhost + ":" + rport + "/" + dbname + "?useUnicode=true&characterEncoding=UTF-8";
dbcpDataSource.setUrl(url);
dbcpDataSource.setDriverClassName("com.mysql.jdbc.Driver");
dbcpDataSource.setUsername(ruser);
dbcpDataSource.setPassword(rpassword);
dbcpDataSource.setDefaultAutoCommit(true);
dbcpDataSource.setMaxActive(100);
dbcpDataSource.setMaxIdle(30);
dbcpDataSource.setMaxWait(500);
DBUtil.dataSource = (DataSource) dbcpDataSource;
}
}


}


} else {
System.out.println("你填入的数据库配置不存在!!!");
}
return new QueryRunner(DBUtil.dataSource);
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值