Подключение Eclipse (Java) к базе данных Oracle - PullRequest
1 голос
/ 12 ноября 2011

Я пытаюсь подключить свое приложение к моей базе данных.Я не выдаю ошибку, она запускается, но не получает информацию.Я попытался запустить tnsping из командной строки, чтобы увидеть, включен ли прослушиватель, и он говорит, что все в порядке.

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.*;
import java.io.*;
import javax.swing.*;

   public class Connector extends JFrame{
  public static void main(String[] args) throws SQLException, ClassNotFoundException 
 {
  Connection conn = null;
  //Statement stmt = null;
  try
  {
    Class.forName("oracle.jdbc.driver.OracleDriver");
    conn = DriverManager.getConnection("jdbc:oracle:thin:@127.0.0.1:1521:dbserver", "scott","tiger");

  }
  catch(SQLException e)
  { JOptionPane.showMessageDialog(null,e.getMessage(), "Erro na COnexao!",JOptionPane.ERROR_MESSAGE);
  }
  catch(Exception e)
  { e.printStackTrace();
  }
  Statement stmt = conn.createStatement();
  ResultSet rset = stmt.executeQuery("SELECT * FROM AnimalM");
  System.out.println ("Nome Salario");
  if (rset.next()){
      System.out.println("Aloooo");
  int cod = rset.getInt(1);
  String nome = rset.getString(2);
  String nome_es = rset.getString(3);
  int id = rset.getInt(4);
  System.out.println (cod+" "+nome+" "+nome_es+" "+id);
  }
  rset.close(); //Close ResultSet
  stmt.close(); //Close Statement
   conn.close(); //Close Connection
   }
 }

Он работает до этой инструкции:

Система.out.println («Ном Саларио»);

И больше ничего не видно, программа останавливается.

Кто-нибудь имеет представление о том, что может происходить?

1 Ответ

1 голос
/ 12 ноября 2011

Я бы порекомендовал пройтись с отладчиком в Eclipse, чтобы посмотреть, что происходит. Возможно, запрос не возвращает строк.

Одно примечание к дизайну. Этот класс объединяет в себе интерфейс, получение соединения и доступ к базе данных. Лучшим подходом было бы разделить их на разные классы. Протестируйте одну функцию, отложите ее в сторону и позвольте другим классам просто использовать функциональность, которую вы только что реализовали и зарекомендовали себя хорошо.

Когда один класс делает слишком много, вы не представляете, в чем проблема, когда что-то идет не так.

Вы также не закрываете свои ресурсы должным образом. Они должны быть упакованы в отдельные блоки try / catch.

Я бы поместил весь код в один блок finally / catch и закрыл ресурсы в конце.

Я бы передал соединение в объект доступа к данным, который отвечал бы за получение ResultSet и отображение его на объекты или структуры данных.

Я бы переместил все Swing из слоя базы данных. Вы можете использовать его без Swing таким образом (например, если вы переключаетесь на веб-интерфейс).

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