Ничего не происходит, когда я запускаю запрос на удаление в scala - PullRequest
0 голосов
/ 12 февраля 2020

Я новичок в java / scala и пытаюсь выполнить некоторые запросы к базе данных Oracle. Мой SELECT работает отлично, но когда я пытаюсь выполнить простое удаление, ничего не происходит, и мне приходится прерывать выполнение в моем терминале intellij.

Вот мой код:

import java.sql.{Connection, DriverManager, PreparedStatement, ResultSet, SQLException, Statement}


object ScalaJdbcConnectSelect extends App {

    // jdbc driver name and database URL
    val JDBC_DRIVER = "oracle.jdbc.OracleDriver";
    val DB_URL      = "jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=XXX)(PORT=1521))(ADDRESS=(PROTOCOL=TCP)(HOST=XXX)(PORT=1521))(FAILOVER=on)(LOAD_BALANCE=on))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=XXX)))";

    // database credentials
    val USER = "sys as sysdba";
    val PASS = "XXX";

    var conn: Connection = _;
    var stmt: Statement = _;


    def insertQuery(query : String): Unit = {
      try {
        Class.forName(JDBC_DRIVER);
        conn = DriverManager.getConnection(DB_URL, USER, PASS);
        stmt = conn.createStatement;

        // create the statement, and run the select query
        val statement = conn.createStatement();
        statement.executeUpdate(query);
        conn.commit();

        // cleanup
        stmt.close();
        conn.close();
      } catch {
        case e: Throwable => e.printStackTrace;
      } finally {
        conn.close();
      }
    }

    def executeQuery(query : String): Unit = {
      try {
        Class.forName(JDBC_DRIVER);
        conn = DriverManager.getConnection(DB_URL, USER, PASS);

        stmt = conn.createStatement;
        val rs: ResultSet = stmt.executeQuery(query);
        /*while (rs.next()) {
          println(rs.getString(1));
        }*/

        // cleanup
        stmt.close();
        conn.close();
      } catch {
        case e: Throwable => e.printStackTrace;
      } finally {
        conn.close();
      }
    }

  val sql = "DELETE FROM APPIVB.TDEMANDESOUSCRIPTION WHERE ID in ('4001111001')";
  //val sql = "SELECT * FROM APPIVB.TDEMANDESOUSCRIPTION WHERE ID in ('4001111001')";

  executeQuery(sql);
  println("Record deleted successfully");
}

У вас есть идея о моей проблеме? Спасибо

1 Ответ

3 голосов
/ 12 февраля 2020

для запросов на удаление вы должны будете использовать -

stmt.executeUpdate(query);

enter image description here

https://docs.oracle.com/javase/tutorial/jdbc/basics/processingsqlstatements.html

...