Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/314.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 通过jdbc运行shell命令_Java_Mysql_Bash_Shell_Jdbc - Fatal编程技术网

Java 通过jdbc运行shell命令

Java 通过jdbc运行shell命令,java,mysql,bash,shell,jdbc,Java,Mysql,Bash,Shell,Jdbc,可以通过java代码中的jdbc运行linux shell命令吗?如何运行? 我一直在尝试: Class.forName("com.mysql.jdbc.Driver"); connect = DriverManager.getConnection("jdbc:mysql://" + this.host + "/" + this.db + "?", properties); statement = connect.createStatement();

可以通过java代码中的jdbc运行linux shell命令吗?如何运行? 我一直在尝试:

Class.forName("com.mysql.jdbc.Driver");
        connect = DriverManager.getConnection("jdbc:mysql://" + this.host + "/" + this.db + "?", properties);
        statement = connect.createStatement();
        String sql = "\\! touch /home/dbsms/testfile";
        statement.execute(sql);
但我得到的是“您的SQL语法有错误”错误。我尝试这个的原因是:
MySQL服务器运行在受保护(无internet)网络上的计算机上。我的java应用程序设计用于操作DB。它是一个文档管理数据库。因此,一旦一个新文档被插入到数据库中,我需要通知用户。同一网络上还有另一台机器可以发送SMS。我需要创建一个文件,其中包含一条短信的文本,并以电话号码命名,短信机上的执事将接收并处理该文件。我知道有一些libs可以让我通过ssh在远程计算机上执行shell命令,但如果可能的话,我想使用jdbc。

对于jdbc,我们有一个数据库连接,我们必须提供一个有效的sql语句来执行。所以你得到了以上的错误


但是,使用java可以执行shell命令。将帮助您。

不,JDBC用于在数据库中执行SQL语句

Java可以运行操作系统级别的命令,但它们仅限于JVM正在运行的框


在我看来(我可能错了),您希望在服务器上运行它们,而不是在本地计算机上运行它们。如果是这种情况,那么您需要打开到服务器的远程连接,可能需要使用SSH或类似方法才能远程运行您的命令。

对于jdbc,我们有一个数据库连接,并且必须提供一个有效的sql语句来执行。不知道如何从sql执行shell脚本。但是我可以帮助您从java代码中执行相同的命令。那么就不可能有“\!command”了吗?那太好了@Abhijit Pritam DuttaIt如果任何有权访问数据库的人都可以在数据库服务器上运行shell命令,这将是一个严重的安全问题。嗯,是的。但是,我需要在远程计算机上创建一个文件,而不是本地计算机。不过无论如何,谢谢你,ChannelSftp()会帮助你的。@AndrijaPetrovic那么,你可以使用JSch library()。或者,正如我提到的,将ssh命令与Runtime.exec(“ssh…”)一起使用,然后使用它执行您需要的命令