hallo leute,
ich bin grad dabei eine oberfläche aufzubauen, mit der ich an einer kleinen datenbank rumspielen kann (projekt fürs studium).
jetzt hab ich aber das problem das ich nicht weiss ob ich mit jdbc auch klassenübergreifend arbeiten kann. habe im netz nur beispiele mit einer klasse gesehen und da ich absolut null ahnung von jdbc habe weiß ich es leider auch nicht besser und hoffe hier hilfe zu finden.
ich zeig euch mal meine kleine gui, dann wisst ihr bestimmt sofort worum es geht:
Das ist meine main. hier bau ich das fenster mit den tabs auf und erstelle die verbindung
das ist (werden aber noch mehr klassen) meine 2. klasse. hier werden die einzelnen tabs inhaltlich aufgebaut und ein button soll dann einen ActionEvent ausführen, der dann so aussieht das er eine sql abfrage durchführt....
MEINE FRAGE: Geht das? kann ich in anderen klassen die bereits geöffnete verbindung nutzen? sorry wenns ne absolut blöde frage ist aber ich hab überhaupt kein plan davon.
ich bin grad dabei eine oberfläche aufzubauen, mit der ich an einer kleinen datenbank rumspielen kann (projekt fürs studium).
jetzt hab ich aber das problem das ich nicht weiss ob ich mit jdbc auch klassenübergreifend arbeiten kann. habe im netz nur beispiele mit einer klasse gesehen und da ich absolut null ahnung von jdbc habe weiß ich es leider auch nicht besser und hoffe hier hilfe zu finden.
ich zeig euch mal meine kleine gui, dann wisst ihr bestimmt sofort worum es geht:
Das ist meine main. hier bau ich das fenster mit den tabs auf und erstelle die verbindung
Code:
public class Dbs extends JPanel{
private static final long serialVersionUID = 1L;
static JFrame f;
Connection con = null;
Erzeuger e = new Erzeuger();
Dbs(){
super(new GridLayout(1, 1));
JTabbedPane tabbedPane = new JTabbedPane();
tabbedPane.addTab( "Insert Student", null, e.ps, "Student");
tabbedPane.addTab( "Insert Professor", null, e.pp, "Professor");
add(tabbedPane);
}
public static void main(String[] args){
f = new JFrame("Datenbanken");
f.add(new Dbs());
f.setVisible(true);
f.pack();
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
try
{
Class.forName( "oracle.jdbc.driver.OracleDriver" );
}
catch ( ClassNotFoundException e )
{
System.err.println( "Keine Treiber-Klasse!" );
return;
}
Connection con = null;
try
{
con = DriverManager.getConnection( "jdbc:oracle:thin:@host:1243:database;shutdown=true", "urganci", "" );
Statement stmt = con.createStatement();
// stmt.executeUpdate( "INSERT INTO CUSTOMER VALUES(50,'Christian','Ullenboom',
// 'Immengarten 6','Hannover')" );
ResultSet rs = stmt.executeQuery( "SELECT * FROM Customer" );
while ( rs.next() )
System.out.println(" %s, %s %s%n, rs.getString(1), rs.getString(2), rs.getString(3) ");
rs.close();
stmt.close();
}
catch ( SQLException e )
{
e.printStackTrace();
}
finally
{
if ( con != null )
try { con.close(); } catch ( SQLException e ) { e.printStackTrace(); }
}
}
}
das ist (werden aber noch mehr klassen) meine 2. klasse. hier werden die einzelnen tabs inhaltlich aufgebaut und ein button soll dann einen ActionEvent ausführen, der dann so aussieht das er eine sql abfrage durchführt....
MEINE FRAGE: Geht das? kann ich in anderen klassen die bereits geöffnete verbindung nutzen? sorry wenns ne absolut blöde frage ist aber ich hab überhaupt kein plan davon.
Code:
import java.awt.*;
import java.awt.event.*;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import javax.swing.*;
public class Erzeuger {
JPanel ps = new JPanel();
JPanel pp = new JPanel();
JPanel pf = new JPanel();
JTextField studentvn = new JTextField(20);
JTextField studentnn = new JTextField(20);
JTextField studentiw = new JTextField(20);
JTextField profnn = new JTextField(20);
JTextField profku = new JTextField(20);
JTextField profiw = new JTextField(20);
JButton studb = new JButton("OK");
JButton profb = new JButton("OK");
Erzeuger(){
erzeugeStud();
erzeugeProf();
}
public void erzeugeStud(){
ps.setLayout(new GridLayout(4, 0, 6, 3));
ps.add(new JLabel("Name: "));
ps.add(studentvn);
ps.add(new JLabel("Vorname: "));
ps.add(studentnn);
ps.add(new JLabel("irgendwas: "));
ps.add(studentiw);
studb.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
// try
// {
// Connection con = null;
// Statement stmt = con.createStatement();
//
//// stmt.executeUpdate( "INSERT INTO CUSTOMER VALUES(50,'Christian','Ullenboom',
//// 'Immengarten 6','Hannover')" );
//
// ResultSet rs = stmt.executeQuery( "SELECT * FROM Customer" );
//
// while ( rs.next() )
// System.out.println(" %s, %s %s%n, rs.getString(1), rs.getString(2), rs.getString(3) ");
//
// rs.close();
//
// stmt.close();
// }
// catch ( SQLException se )
// {
// se.printStackTrace();
// }
System.out.println("Hallo button");
}
});
ps.add(studb);
}
public void erzeugeProf(){
pp.setLayout(new GridLayout(4, 0, 6, 3));
pp.add(new JLabel("Name: "));
pp.add(profnn);
pp.add(new JLabel("Kürzel: "));
pp.add(profku);
pp.add(new JLabel("irgendwas: "));
pp.add(profiw);
pp.add(profb);
}
}