Все игры
Запись

JTable и база данных к примеру oracle

настроение:Любопытное
хочется:пива, денег и славы
слушаю:дядю женю респект ему в Новосиб

Нравится

Вы не можете комментировать, т.к. не авторизованы.


Дмитрий -      14-01-2009 16:21 (ссылка)
Re: JTable и база данных к примеру oracle
чуть не забыл первоисточник в книге "технологии программирования на Java2" книга 1 (Java_Advanced_Java2_Platform_HowToProgram_1) я лишь слегка изменил в отношении драйвера и добавил класс отдельный подключения
Дмитрий -      20-01-2009 06:15 (ссылка)
Re: JTable и база данных к примеру oracle
Сам себе отвечаю, может кому пригодится
//класс соединения с БД oracle

import java.sql.Connection;
import java.sql.SQLException;

import oracle.jdbc.pool.OracleDataSource;

public class Connector {

private static String host = "server";
private static String login = "scott";
private static String passwd = "tiger";
private static String sid="oracle";

public static Connection conn() throws SQLException {

OracleDataSource ods;
Connection conn = null;


try {
ods = new OracleDataSource();
ods.setURL("jdbc:oracle:thin:@//" + host + ":1521/" + sid);
ods.setServerName(host);
ods.setUser(login);
ods.setPassword(String.valueOf(passwd));
conn = ods.getConnection();
conn.setReadOnly(true);
conn.setAutoCommit(false);


} catch (SQLException ex) {

ex.printStackTrace();

}

return conn;
}
//класс реализующий модель таблицы

import java.sql.Connection;

import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Statement;

import javax.swing.table.AbstractTableModel;

public class ResultSetTableModel extends AbstractTableModel {

private Connection connection;
private Statement statement;
private ResultSet resultSet;
private ResultSetMetaData metaData;
private int numberOfRows;


public ResultSetTableModel(String query) throws SQLException, ClassNotFoundException {



connection = Connector.conn();

statement = connection.createStatement(
ResultSet.TYPE_SCROLL_INSENSITIVE,
ResultSet.CONCUR_READ_ONLY);
setQuery(query);
}

public Class getColumnClass(int column) {
try{
String className =
metaData.getColumnClassName(column + 1);
return Class.forName( className);

}catch(Exception exception){
exception.printStackTrace();
}
return Object.class;
}


public int getColumnCount() {
try{
return metaData.getColumnCount();
} catch (SQLException sqlException) {
sqlException.printStackTrace();
}
return 0;
}

public String getColumnName(int column){
try{
return metaData.getColumnName(column+1);
} catch (SQLException sqlException) {
sqlException.printStackTrace();
}
return "";
}

public int getRowCount() {
return numberOfRows;
}

public Object getValueAt(int row, int column) {
try{
resultSet.absolute(row+1);
return resultSet.getObject(column +1);

} catch (SQLException sqlException) {
sqlException.printStackTrace();
}
return "";
}

protected void finalize(){
try{
statement.close();
connection.commit();
} catch (SQLException e) {
e.printStackTrace();
}
}

public void setQuery(String query) throws SQLException {
resultSet=statement.executeQuery(query);
metaData=resultSet.getMetaData();
resultSet.last();
numberOfRows = resultSet.getRow();
fireTableStructureChanged();
}
}
//класс отвечающий за интерфейс и визуализацию
import java.awt.BorderLayout;
import java.awt.Container;

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

import java.sql.SQLException;

import javax.swing.Box;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextArea;
import javax.swing.ScrollPaneConstants;

public class DisplayQueryResults extends JFrame {

private ResultSetTableModel tableModel;
private JTextArea queryArea;

public DisplayQueryResults() {
super("ОТОБРАЖЕНИЕ РЕЗУЛЬТАТОВ ЗАПРОСА");
String query ="select * from departments";
try{
tableModel=
new ResultSetTableModel(query);
queryArea = new JTextArea(query, 3, 100);
queryArea.setWrapStyleWord(true);
queryArea.setLineWrap(true);
JScrollPane scrollPane = new JScrollPane(queryArea,
ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED,
ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
JButton submitButton = new JButton("послать");
Box box = Box.createHorizontalBox();
box.add(scrollPane);
box.add(submitButton);
JTable resultTable = new JTable(tableModel);
Container c = getContentPane();
c.add(box, BorderLayout.NORTH);
c.add(new JScrollPane(resultTable), BorderLayout.CENTER);
submitButton.addActionListener(
new ActionListener(){
public void actionPerformed(ActionEvent e){
try{
tableModel.setQuery(queryArea.getText());
}catch(SQLException sqlException){
JOptionPane.showMessageDialog(null, sqlException.toString(), "ошибка БД", JOptionPane.ERROR_MESSAGE);
}
}
}
);

setSize(500, 250);
setVisible(true);



} catch (SQLException e) {
JOptionPane.showMessageDialog(null, e.toString(), "ошибка БД", JOptionPane.ERROR_MESSAGE);
System.exit(1);
} catch (ClassNotFoundException e) {
JOptionPane.showMessageDialog(null, e.toString(), "ошибка драйвера", JOptionPane.ERROR_MESSAGE);
System.exit(1);
}
}
public static void main(String args[]){
DisplayQueryResults app = new DisplayQueryResults();
app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}