Выполнение команды оболочки через jdbc - PullRequest
0 голосов
/ 30 августа 2018

Можно ли запускать команды оболочки linux через jdbc в коде java и как? Я пытался это:

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 работает на машине, которая находится в защищенной (без интернета) сети. Мое Java-приложение предназначено для управления БД. Это БД управления документами. Поэтому, как только новый документ вставлен в БД, я должен уведомить пользователей. В той же сети есть другая машина, которая может отправлять SMS. Мне нужно создать файл, содержащий текст SMS-сообщения и названный в качестве номера телефона, и демон на SMS-машине его подберет и обработает. Я знаю, что есть библиотеки, которые позволяют мне выполнять команду оболочки на удаленном компьютере через ssh, но я хотел бы использовать jdbc, если это возможно.

Ответы [ 2 ]

0 голосов
/ 01 сентября 2018

Нет, JDBC предназначен для выполнения операторов SQL в базе данных.

Java может запускать команды уровня ОС, но они ограничены тем окном, в котором работает JVM.

Мне кажется (я могу ошибаться), что вы хотите запускать их на сервере, а не на своей локальной машине. Если это так, то вам нужно открыть удаленное соединение с сервером, возможно, используя SSH или аналогичный, чтобы выполнить вашу команду удаленно.

0 голосов
/ 30 августа 2018

С помощью jdbc у нас есть соединение с базой данных, и для этого мы должны предоставить действительный SQL-оператор. Итак, вы получаете ошибку выше.

Но с помощью Java вы можете выполнять команды оболочки. Эта статья поможет вам.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...