so wie ich das verstanden habe, wird gleich oben im quellcode der button und das textfeld mit "null" initialisiert. ich kopiere einfach mal den gesamten quellcode hierrein und markiere die aufgabenstellungen farbig.
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Statement;
import java.awt.event.*;
import java.awt.*;
import javax.swing.JFrame;
import javax.swing.JTextField;
import javax.swing.JOptionPane;
import javax.swing.JScrollPane;
import javax.swing.JPanel;
import javax.swing.JButton;
import javax.swing.JTextArea;
import javax.swing.WindowConstants;
/**
* Hauptfenster der Anwendung. Hier finden Sie alle Aufgaben, die zu lösen sind. Suchen Sie einfach
* nach der Zeichenkette <i>@@TO DO@@</i> oder gehen Sie die Datei zeilenweise durch.
* @author David Zellhöfer
*
*/
public class FrameJDBC extends JFrame implements WindowListener{
// String für die Anfrage an das DBMS
private String query = "SELECT * FROM some_table";
// Variable für die Verbindung zur Datenbank
private Connection connection = null;
// Variablen für die GUI
private javax.swing.JPanel jContentPane = null;
private JScrollPane scrlPane = null;
private JPanel mainPanel = null;
private JPanel buttonPanel=null;
private JButton btnQuery = null;
private JTextArea txtResult = null;
private JTextField txtQuery=null;
/**
* Konstruktor für das Fenster und seiner Widgets
*/
public FrameJDBC() {
super();
init();
initDBConnection();
}
/**
* Initialisierung der GUI
*/
private void init() {
this.setTitle("DB/DM Java-Übung");
this.addWindowListener(this);
this.setContentPane(getJPanel());
this.setSize(500, 400);
this.validate();
}
/**
* Öffnen der Datenbankverbindung
*/
private void initDBConnection(){
//@@TO DO@@
//Setzen Sie die JDBC-URL und Ihren Login korrekt
//Hinweise: Der mitgelieferte Treiber ist ein Oracle-Thin-Treiber
// Informationen zu Oracle und JDBC sind im Internet gut dokumentiert
String url ="jdbc:zensiert:@zensiert:zensiert:zensiert";
String username = "zensiert"; //Nutzername
String password = "zensiert"; //Passwort
// Instanzierung des Oracle-Treibers
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
}
catch(ClassNotFoundException e) {
JOptionPane.showMessageDialog(null, e.getMessage(), "Kein Treiber gefunden", JOptionPane.ERROR_MESSAGE);
e.printStackTrace();
System.exit(1);
}
//Erstellung einer Verbindung zur Datenbank
try {
connection = DriverManager.getConnection(url, username, password);
} catch (SQLException e) {
JOptionPane.showMessageDialog(null, e.getMessage(), "Kein Verbindungsaufbau möglich", JOptionPane.ERROR_MESSAGE);
e.printStackTrace();
}
}
/**
* Ausfuehrung der DB-Anfrage
*/
private void executeQuery(){
try {
[COLOR="Red"]// @@TO DO@@
// Verbinden Sie hier die eingebene Einfrage mit dem Absenden einer Abfrage
// Hinweis: Das Textfeld heißt "txtQuery"[/COLOR]
//Erzeugung eines Statements
Statement statement = connection.createStatement();
//Holen Ergebnismenge der Anfrage
ResultSet resultSet = statement.executeQuery(query);
showResult(resultSet);
//Schliessen des ResultSets
resultSet.close();
} catch (SQLException e) {
JOptionPane.showMessageDialog(null, e.getMessage(), "Fehler beim Ausführen der Abfrage", JOptionPane.ERROR_MESSAGE);
e.printStackTrace();
}
}
/**
* Ausgabe der Ergebnismenge in der TextArea
*/
private void showResult(ResultSet resultSet){
try {
this.txtResult.setText("");
// Holen der Metadaten der Datenbank
ResultSetMetaData metaData = resultSet.getMetaData();
// Anzahl der Tabellenspalten
int number = metaData.getColumnCount();
// Ausgabe der Spaltennamen
addTextToArea("\n");
for (int i=1;i<=number;i++){
// Name der Tabellenspalte
String name = metaData.getColumnName(i);
// Ausgabe der Spaltennamen in der TextArea
addTextToArea(name + " ");
}
addTextToArea("\n");
addTextToArea("--------------------------------\n");
[COLOR="Red"]//@@TO DO@@
// Geben Sie die Spaltenwerte zeilenweise aus[/COLOR]
} catch (SQLException e) {
e.printStackTrace();
}
}
/**
* Fügt eine Text zur TextArea hinzu ohne diese zu überschreiben
*/
private void addTextToArea(String str){
getJTextArea().setText(getJTextArea().getText()+ str);
}
/**
* Erzeugt die eigentliche GUI
*/
private JPanel getJPanel() {
mainPanel = new JPanel();
mainPanel.setLayout(new BorderLayout());
this.txtQuery=new JTextField();
this.txtQuery.setText(this.query);
mainPanel.add(txtQuery,BorderLayout.NORTH);
createButtons();
mainPanel.add(buttonPanel,BorderLayout.SOUTH);
mainPanel.add(getJScrollPane(), BorderLayout.CENTER);
return mainPanel;
}
/**
* Erzeugt die Buttons der Anwendung
*/
private void createButtons() {
this.buttonPanel=new JPanel();
this.buttonPanel.setLayout(new FlowLayout());
if (btnQuery == null) {
btnQuery = new JButton();
btnQuery.setText("Abfrage senden");
btnQuery.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent e) {
JOptionPane.showMessageDialog(null, "Die Abfrage wird nun gesendet. Die Rückgabe der Ergebnisse kann einige Zeit dauern.", "Verbinden mit der DB", JOptionPane.INFORMATION_MESSAGE);
executeQuery();
}
});
}
buttonPanel.add(btnQuery);
}
/**
* Erzeugt eine TextArea zur Anzeige des Anfrageergebnisses
*/
private JTextArea getJTextArea() {
if (txtResult == null) {
txtResult = new JTextArea();
txtResult.setColumns(20);
txtResult.setRows(20);
txtResult.setText("");
}
return txtResult;
}
/**
* Erzeugt ein ScrollPane
*/
private JScrollPane getJScrollPane() {
if (scrlPane == null) {
scrlPane = new JScrollPane(getJTextArea());
}
return scrlPane;
}
/**
* Schließt die DB-Verbindung
*/
public void dispose(){
try {
if(connection!=null)
connection.close();
} catch (SQLException e) {
JOptionPane.showMessageDialog(null, e.getMessage(), "Fehler beim Verbindungsabbau", JOptionPane.ERROR_MESSAGE);
e.printStackTrace();
}
}
@Override
public void windowClosing(WindowEvent arg0) {
this.dispose();
System.exit(0);
}
@Override
public void windowActivated(WindowEvent arg0) {
// TODO Auto-generated method stub
}
@Override
public void windowClosed(WindowEvent arg0) {
// TODO Auto-generated method stub
}
@Override
public void windowDeactivated(WindowEvent arg0) {
// TODO Auto-generated method stub
}
@Override
public void windowDeiconified(WindowEvent arg0) {
// TODO Auto-generated method stub
}
@Override
public void windowIconified(WindowEvent arg0) {
// TODO Auto-generated method stub
}
@Override
public void windowOpened(WindowEvent arg0) {
// TODO Auto-generated method stub
}
}
reicht da der code query = txtQuery.getText();
um das textfeld zu verbinden?