日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

jsch连接mysql_求用jsch网络工具包通过ssh连接远程oracle数据库并发送sql操作语句(数据库在unix上)java代码例子...

發布時間:2024/9/15 数据库 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 jsch连接mysql_求用jsch网络工具包通过ssh连接远程oracle数据库并发送sql操作语句(数据库在unix上)java代码例子... 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

求用jsch網絡工具包通過ssh連接遠程oracle數據庫(數據庫在unix上)java代碼例子:為何jsch發送:sqlplususer/pwd@service此命令,卻沒有結果返回啊。下面是代碼:publicclassSSHClienti...

求用jsch網絡工具包通過ssh連接遠程oracle數據庫(數據庫在unix上)java代碼例子: 為何jsch發送:sqlplus user/pwd@service 此命令,卻沒有結果返回啊。下面是代碼:

public class SSHClient implements ConnClient {

private Logger log=Logger.getLogger(SSHClient.class);

private int sessiontimeout = 6000;

private String addr;

private int port = 22;

private String username;

private String password;

Session session = null;

Channel channel = null;

ChannelExec execChannel = null;

public SSHClient(String addr) {

this.addr = addr;

}

public SSHClient(String addr, int port) {

this.addr = addr;

this.port = port;

}

public boolean connect(String username, String password) {

JSch jsch = new JSch();

try {

session = jsch.getSession(username, addr, port);

session.setUserInfo(new MyUserInfo(password));

session.setConfig("StrictHostKeyChecking", "no");

// session.setPassword(password);

session.connect(sessiontimeout);

} catch (JSchException e) {

log.error("SSHClient Connect Error :"+e.getMessage());

return false;

}

return true;

}

public String execcmd(String cmd) {

try {

channel = session.openChannel("exec");

execChannel = (ChannelExec) channel;

execChannel.setCommand(cmd);

execChannel.connect();

BufferedReader fromServer;

fromServer = new java.io.BufferedReader(new InputStreamReader(

(execChannel.getInputStream())));

StringBuffer sb = new StringBuffer();

// try {

// Thread.sleep(1000);

// } catch (InterruptedException e) {

// e.printStackTrace();

// }

// while (fromServer.ready()) {

// String tt = fromServer.readLine();

// sb.append(tt + '\n');

// }

String tt=null;

while ((tt=fromServer.readLine())!=null) {

sb.append(tt + '\n');

}

fromServer.close();

return sb.toString();

} catch (Exception e) {

e.printStackTrace();

return null;

} finally {

execChannel.disconnect();

}

}

public void close() {

if (session != null) {

session.disconnect();

}

}

/**

* @param args

*/

public static void main(String[] args) {

SSHClient ssh = new SSHClient("192.168.4.126", 22);

ssh.connect("abc", "abc");

String ret = ssh.execcmd("ps -ef|grep java ");//這個可以返回結果,但連接oracle數據庫sqlplus命令卻無結果顯示

System.out.println(ret);

ssh.close();

}

public static class MyUserInfo implements UserInfo {

MyUserInfo(String password){

this.passwd=password;

}

String passwd = null;

public String getPassword() {

return passwd;

}

public boolean promptYesNo(String str) {

return true;

}

public String getPassphrase() {

return null;

}

public boolean promptPassphrase(String message) {

return true;

}

public boolean promptPassword(String message) {

return true;

}

public void showMessage(String message) {

}

}

}

=======================問題我已解決

可以將要執行的oracle查詢寫到shell腳本中:

#!/bin/bash

. ${HOME}/.profile

sqlplus -s xx/yy@lc8 <

set linesize 1000;

select * from mon_type;

quit

!

然后讀取此腳本轉為字符串,

String cmdValue =readFile();

String ret = client.execcmd(cmdValue);

System.out.println("["+ret+"]");

這樣就有返回結果了。

或者:

注意發送的shell命令的寫法:注意加上環境配置的profile,并且以\n換行

String cmdValue = "cd;. ${HOME}/.profile;sqlplus monitor/monitor@lcims8 <

String ret = client.execcmd(cmdValue);

這樣ret就有結果返回了。

sysbase寫法:

cmdValue="cd;. ${HOME}/.profile;isql -Uxx -Pyy -SUSER_SERVER7 -w400<

select top 2 * from M_C00\ngo";

展開

總結

以上是生活随笔為你收集整理的jsch连接mysql_求用jsch网络工具包通过ssh连接远程oracle数据库并发送sql操作语句(数据库在unix上)java代码例子...的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。