2015-02-16 3 views
0

, поэтому я работаю над созданием графического интерфейса, который может извлекать информацию из базы данных (в этом случае я использую Oracle 11g XE) с помощью JDBC, чтобы делать такие вещи, как заполнение JTable (построенный с использованием WindowBuilder).Java JDBC Eclipse Заполняет JTable с Oracle DB

Мой сервер Oracle Oracle работает, и я могу успешно подключиться к нему, однако, когда я пытаюсь выполнить запрос, который нужно передать в БД, что-то пойдет не так.

Вот мой класс Connection, используется только для подключения к БД:

import java.sql.*; 
import javax.swing.*; 

public class OracleConnection { 
    static Connection con = null; 

    public static Connection dbConnector() { 
    try { 
     Class.forName("oracle.jdbc.driver.OracleDriver"); 
     con = DriverManager.getConnection(
      "jdbc:oracle:thin:@localhost:1521:XE", "system", "system"); 
     JOptionPane.showMessageDialog(null, "Connection Successful!"); 
    } catch (Exception x) { 
     JOptionPane.showMessageDialog(null, "Connection Unsuccessful."); 
    } 
    return null; 
    } 

    public static void main(String[] args) { 
    dbConnector(); 
    } 
} 

Это работает («! Успешное соединение», по крайней мере, насколько мне известно, это потому я пробужден с сообщением)

Теперь вот мой GUI класс (только другой класс в данный момент):

import java.awt.EventQueue; 
import java.sql.*; 
import javax.swing.*; 
import java.awt.CardLayout; 
import javax.swing.JPanel; 
import javax.swing.JButton; 
import java.awt.Font; 
import javax.swing.JLabel; 
import javax.swing.JTable; 
import javax.swing.JScrollPane; 
import javax.swing.table.DefaultTableModel; 

import net.proteanit.sql.DbUtils; 

import java.awt.Color; 
import java.awt.event.ActionListener; 
import java.awt.event.ActionEvent; 

public class Management { 

    private JFrame frame; 
    private JTable tableDownloads; 
    private JPanel panelMenu; 
    private JPanel panelDown; 
    private JPanel panelUp; 
    private JPanel panelUtility; 
    private JTable tableUploads; 
    private JTable tableUtilities; 
    ResultSet rs = null; 
    PreparedStatement pat = null; 
    Connection conn = null; 


    /** 
    * Launch the application. 
    */ 
    public static void main(String[] args) { 
    EventQueue.invokeLater(new Runnable() { 
     public void run() { 
     try { 
      Management window = new Management(); 
      window.frame.setVisible(true); 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
     } 
    }); 
    } 

    /** 
    * Create the application. 
    */ 

    public Management() { 
    conn = OracleConnection.dbConnector(); 
    initialize(); 
    } 

    /** 
    * Initialize the contents of the frame. 
    */ 
    private void initialize() { 

    //CREATES ALL FRAMES/PANELS/BUTTONS/SCROLLPANES/LABELS 
    //I CUT A LOT OF UN-NEEDED STUFF OUT TO SAVE ROOM 

    //CREATING FRAMES 
    frame = new JFrame(); 
    frame.setBounds(100, 100, 450, 300); 
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    frame.getContentPane().setLayout(new CardLayout(0, 0)); 


    //CREATING PANELS 
    final JPanel panelMenu = new JPanel(); 
    frame.getContentPane().add(panelMenu, "name_13312291634045"); 
    panelMenu.setLayout(null); 

    final JPanel panelDown = new JPanel(); 
    frame.getContentPane().add(panelDown, "name_13314999633769"); 
    panelDown.setLayout(null); 
    panelDown.setVisible(false); 


    //CREATING TABLES 
    tableDownloads = new JTable(); 
    scrollPaneDownloads.setViewportView(tableDownloads); 


    //CREATING BUTTONS 
    JButton btnDownloads = new JButton("Downloads"); 
    btnDownloads.addActionListener(new ActionListener() { 
     public void actionPerformed(ActionEvent arg0) { 
     panelMenu.setVisible(false); 
     panelDown.setVisible(true); 
     generateDownloads(); 
     } 
    }); 
    btnDownloads.setFont(new Font("Cambria", Font.BOLD, 14)); 
    btnDownloads.setBounds(32, 104, 122, 39); 
    panelMenu.add(btnDownloads); 

    JButton btnBackDown = new JButton("Back to Menu"); 
    btnBackDown.setFont(new Font("Cambria", Font.PLAIN, 13)); 
    btnBackDown.addActionListener(new ActionListener() { 
     public void actionPerformed(ActionEvent e) { 
     panelDown.setVisible(false); 
     panelMenu.setVisible(true); 
     } 
    }); 
    btnBackDown.setBounds(323, 239, 109, 23); 
    panelDown.add(btnBackDown); 


    //CREATING LABELS 
    JLabel lblDownloaduploadAndUtility = new JLabel("Download/Upload and Utility Manager"); 
    lblDownloaduploadAndUtility.setFont(new Font("Cambria", Font.BOLD, 20)); 
    lblDownloaduploadAndUtility.setBounds(48, 11, 370, 39); 
    panelMenu.add(lblDownloaduploadAndUtility); 

    JLabel lblDownloadsTable = new JLabel("Downloads Table"); 
    lblDownloadsTable.setFont(new Font("Cambria", Font.BOLD, 24)); 
    lblDownloadsTable.setBounds(122, 0, 196, 29); 
    panelDown.add(lblDownloadsTable); 
    } 


    //METHOD TO GENERATE DOWNLOADS TABLE ******NOT WORKING****** 

    private void generateDownloads() { 
    try { 
     String query = "SELECT * FROM DOWNLOADS"; 
     pat = conn.prepareStatement(query);  //******** FAILS HERE ******** 
     rs = pat.executeQuery(); 
     tableDownloads.setModel(DbUtils.resultSetToTableModel(rs)); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
    } 
} 

кажется, разорвать на pat = conn.prepareStatement(query);

Ошибка я получаю ...

на Management.generateDownloads (Management.java:207) в Management.access $ 1 (Management.java:204) в управления $ 2.actionPerformed (Управление .java: 115) в javax.swing.AbstractButton.fireActionPerformed (Unknown Source) в javax.swing.AbstractButton $ Handler.actionPerformed (Unknown Source) в javax.swing.DefaultButtonModel.fireActionPerformed (Unknown Source) в javax. swing.DefaultButtonModel.setPressed (Неизвестный источник) в javax.swing.plaf.basic.BasicButtonListener.mouseReleased (Неизвестно)Источник) ...

и продолжается на протяжении многих более строк подобных ошибок ..

Я не могу показаться, чтобы выяснить причину, почему она не правильно сообщающийся с БД. Любая помощь была бы БОЛЬШОЙ оценкой парней!

ответ

1

Но ваш метод dbConnector() всегда возвращает null.

Может быть, вы хотите, чтобы сделать это вместо того, чтобы:

public static Connection dbConnector() { 
    if (con == null) { 
     try { 
      Class.forName("oracle.jdbc.driver.OracleDriver"); 
      con = DriverManager.getConnection(
       "jdbc:oracle:thin:@localhost:1521:XE", "system", "system"); 
      JOptionPane.showMessageDialog(null, "Connection Successful!"); 
     } catch (Exception x) { 
      JOptionPane.showMessageDialog(null, "Connection Unsuccessful."); 
     } 
    } 
    return con; 
} 
+0

Я не могу поверить, что это ха-ха .. Отработавшие часов до размещения здесь, глядя на все виды вещей, не может поверить, что это это просто из затруднительного! Спасибо тонну gknicker! – Blued00d

+0

Рад помочь :) – gknicker

Смежные вопросы