Benutzer löschen mittels Netbeans

hallo!

Ich bräuchte ganz dringend eure Hilfe!!!

ich habe es mittlerweile geschafft, dass über meine GUI in Netbeans ein neues Mitglied in meine SQL Datenbank gespeichert wird.

Jetzt möchte ich gerne, dass man einen Benutzer löscht und zwar folgendermaßen:

Ich habe die Datei MitgliederverwaltungGUI4, dort wird in ein Textfeld (jTextfield5) eine Zahl eingegeben, nämlich die ID von dem Kunden, der gelöscht werden soll, anschließend klicke ich auf „Löschen“ und gelange auf die GUI4_1, wo ich noch einmal mit „Ja“ bestätige. Also wenn man auf Ja klickt soll die ID von GUI4 aus der Datenbank gelöscht werden.

Dazu gibt es dir Prozedur „deleteMember.sql“, die aufgerufen wird.

Mein Problem ist leider, dass es noch nicht ganz funktioniert. Bitte um Hilfe.

Hier der Code von GUI4:

/\*  
 \* MitgliederverwaltungGUI4.java  
 \*  
 \* Created on 9. Dezember 2008, 09:43  
 \*/  
package mitgliederverwaltung;  
import java.sql.\*; // importe  
import java.util.\*;  
import javax.swing.\*;  
import java.awt.\*;  
  
  
/\*\*  
 \*  
 \* @author user  
 \*/  
public class MitgliederverwaltungGUI4 extends javax.swing.JFrame {  
  
 /\*\* Creates new form MitgliederverwaltungGUI4 \*/  
 public MitgliederverwaltungGUI4() {  
 initComponents();  
 }  
  
 /\*\* This method is called from within the constructor to  
 \* initialize the form.  
 \* WARNING: Do NOT modify this code. The content of this method is  
 \* always regenerated by the Form Editor.  
 \*/  
 @SuppressWarnings("unchecked")  
 // //GEN-BEGIN:initComponents  
 private void initComponents() {  
  
 label1 = new java.awt.Label();  
 label6 = new java.awt.Label();  
 jTextField5 = new javax.swing.JTextField();  
 jButton1 = new javax.swing.JButton();  
 jButton2 = new javax.swing.JButton();  
  
 setDefaultCloseOperation(javax.swing.WindowConstants.EXIT\_ON\_CLOSE);  
  
 label1.setAlignment(java.awt.Label.CENTER);  
 label1.setFont(new java.awt.Font("Comic Sans MS", 1, 18));  
 label1.setText("Benutzer löschen");  
  
 label6.setText("Kunde ID");  
  
 jTextField5.addInputMethodListener(new java.awt.event.InputMethodListener() {  
 public void caretPositionChanged(java.awt.event.InputMethodEvent evt) {  
 }  
 public void inputMethodTextChanged(java.awt.event.InputMethodEvent evt) {  
 jTextField5InputMethodTextChanged(evt);  
 }  
 });  
  
 jButton1.setText("Löschen");  
 jButton1.addActionListener(new java.awt.event.ActionListener() {  
 public void actionPerformed(java.awt.event.ActionEvent evt) {  
 jButton1ActionPerformed(evt);  
 }  
 });  
  
 jButton2.setText("Zurück zur Auswahl");  
 jButton2.addActionListener(new java.awt.event.ActionListener() {  
 public void actionPerformed(java.awt.event.ActionEvent evt) {  
 jButton2ActionPerformed(evt);  
 }  
 });  
  
 org.jdesktop.layout.GroupLayout layout = new org.jdesktop.layout.GroupLayout(getContentPane());  
 getContentPane().setLayout(layout);  
 layout.setHorizontalGroup(  
 layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)  
 .add(layout.createSequentialGroup()  
 .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)  
 .add(layout.createSequentialGroup()  
 .addContainerGap()  
 .add(label1, org.jdesktop.layout.GroupLayout.DEFAULT\_SIZE, 657, Short.MAX\_VALUE))  
 .add(layout.createSequentialGroup()  
 .add(253, 253, 253)  
 .add(label6, org.jdesktop.layout.GroupLayout.PREFERRED\_SIZE, 81, org.jdesktop.layout.GroupLayout.PREFERRED\_SIZE)  
 .add(1, 1, 1)  
 .add(jTextField5, org.jdesktop.layout.GroupLayout.PREFERRED\_SIZE, 89, org.jdesktop.layout.GroupLayout.PREFERRED\_SIZE)))  
 .addContainerGap())  
 .add(org.jdesktop.layout.GroupLayout.TRAILING, layout.createSequentialGroup()  
 .addContainerGap(316, Short.MAX\_VALUE)  
 .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)  
 .add(layout.createSequentialGroup()  
 .add(jButton2, org.jdesktop.layout.GroupLayout.PREFERRED\_SIZE, 169, org.jdesktop.layout.GroupLayout.PREFERRED\_SIZE)  
 .addContainerGap())  
 .add(org.jdesktop.layout.GroupLayout.TRAILING, layout.createSequentialGroup()  
 .add(jButton1, org.jdesktop.layout.GroupLayout.PREFERRED\_SIZE, 119, org.jdesktop.layout.GroupLayout.PREFERRED\_SIZE)  
 .add(242, 242, 242))))  
 );  
 layout.setVerticalGroup(  
 layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)  
 .add(layout.createSequentialGroup()  
 .addContainerGap()  
 .add(label1, org.jdesktop.layout.GroupLayout.PREFERRED\_SIZE, 75, org.jdesktop.layout.GroupLayout.PREFERRED\_SIZE)  
 .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)  
 .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)  
 .add(label6, org.jdesktop.layout.GroupLayout.PREFERRED\_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT\_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED\_SIZE)  
 .add(jTextField5, org.jdesktop.layout.GroupLayout.PREFERRED\_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT\_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED\_SIZE))  
 .add(39, 39, 39)  
 .add(jButton1, org.jdesktop.layout.GroupLayout.PREFERRED\_SIZE, 44, org.jdesktop.layout.GroupLayout.PREFERRED\_SIZE)  
 .add(18, 18, 18)  
 .add(jButton2, org.jdesktop.layout.GroupLayout.PREFERRED\_SIZE, 44, org.jdesktop.layout.GroupLayout.PREFERRED\_SIZE)  
 .addContainerGap(47, Short.MAX\_VALUE))  
 );  
  
 pack();  
 }// //GEN-END:initComponents  
  
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event\_jButton1ActionPerformed  
// TODO add your handling code here:  
JFrame MitgliederverwaltungGUI4\_1 = new MitgliederverwaltungGUI4\_1();   
MitgliederverwaltungGUI4\_1.setVisible(true);   
MitgliederverwaltungGUI4\_1.setSize(800,600);   
}//GEN-LAST:event\_jButton1ActionPerformed  
  
private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event\_jButton2ActionPerformed  
// TODO add your handling code here:  
 dispose();  
}//GEN-LAST:event\_jButton2ActionPerformed  
  
private void jTextField5InputMethodTextChanged(java.awt.event.InputMethodEvent evt) {//GEN-FIRST:event\_jTextField5InputMethodTextChanged  
// TODO add your handling code here:  
 Mitglieder m = new Mitglieder();  
 String eingabe;  
 m.setEingabe(jTextField5.getText());  
}//GEN-LAST:event\_jTextField5InputMethodTextChanged  
  
  
 /\*\*  
 \* @param args the command line arguments  
 \*/  
 public static void main(String args[]) {  
 java.awt.EventQueue.invokeLater(new Runnable() {  
 public void run() {  
 new MitgliederverwaltungGUI4().setVisible(true);  
 }  
 });  
 }  
  
 // Variables declaration - do not modify//GEN-BEGIN:variables  
 private javax.swing.JButton jButton1;  
 private javax.swing.JButton jButton2;  
 private javax.swing.JTextField jTextField5;  
 private java.awt.Label label1;  
 private java.awt.Label label6;  
 // End of variables declaration//GEN-END:variables  
  
}  
  

und hier der code von der GUI4_1:

/\*  
 \* MitgliederverwaltungGUI4\_1.java  
 \*  
 \* Created on 9. Dezember 2008, 09:48  
 \*/  
  
package mitgliederverwaltung;  
import java.sql.\*; // importe  
import java.util.\*;  
import javax.swing.\*;  
import java.awt.\*;  
import java.util.logging.Level;  
import java.util.logging.Logger;  
import javax.swing.JOptionPane;  
import javax.swing.JTable;  
import javax.swing.table.DefaultTableModel;  
  
  
/\*\*  
 \*  
 \* @author user  
 \*/  
public class MitgliederverwaltungGUI4\_1 extends javax.swing.JFrame {  
  
 /\*\* Creates new form MitgliederverwaltungGUI4\_1 \*/  
 public MitgliederverwaltungGUI4\_1() {  
 initComponents();  
 }  
  
 /\*\* This method is called from within the constructor to  
 \* initialize the form.  
 \* WARNING: Do NOT modify this code. The content of this method is  
 \* always regenerated by the Form Editor.  
 \*/  
 @SuppressWarnings("unchecked")  
 // //GEN-BEGIN:initComponents  
 private void initComponents() {  
  
 label1 = new java.awt.Label();  
 jButton1 = new javax.swing.JButton();  
 jButton2 = new javax.swing.JButton();  
  
 setDefaultCloseOperation(javax.swing.WindowConstants.EXIT\_ON\_CLOSE);  
  
 label1.setAlignment(java.awt.Label.CENTER);  
 label1.setFont(new java.awt.Font("Comic Sans MS", 1, 18));  
 label1.setText("Sind Sie sicher?");  
  
 jButton1.setText("Ja");  
 jButton1.addActionListener(new java.awt.event.ActionListener() {  
 public void actionPerformed(java.awt.event.ActionEvent evt) {  
 jButton1ActionPerformed(evt);  
 }  
 });  
  
 jButton2.setText("Nein");  
 jButton2.addActionListener(new java.awt.event.ActionListener() {  
 public void actionPerformed(java.awt.event.ActionEvent evt) {  
 jButton2ActionPerformed(evt);  
 }  
 });  
  
 org.jdesktop.layout.GroupLayout layout = new org.jdesktop.layout.GroupLayout(getContentPane());  
 getContentPane().setLayout(layout);  
 layout.setHorizontalGroup(  
 layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)  
 .add(layout.createSequentialGroup()  
 .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)  
 .add(layout.createSequentialGroup()  
 .addContainerGap()  
 .add(label1, org.jdesktop.layout.GroupLayout.DEFAULT\_SIZE, 617, Short.MAX\_VALUE))  
 .add(layout.createSequentialGroup()  
 .add(167, 167, 167)  
 .add(jButton1, org.jdesktop.layout.GroupLayout.PREFERRED\_SIZE, 119, org.jdesktop.layout.GroupLayout.PREFERRED\_SIZE)  
 .add(38, 38, 38)  
 .add(jButton2, org.jdesktop.layout.GroupLayout.PREFERRED\_SIZE, 119, org.jdesktop.layout.GroupLayout.PREFERRED\_SIZE)))  
 .addContainerGap())  
 );  
 layout.setVerticalGroup(  
 layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)  
 .add(layout.createSequentialGroup()  
 .add(117, 117, 117)  
 .add(label1, org.jdesktop.layout.GroupLayout.PREFERRED\_SIZE, 75, org.jdesktop.layout.GroupLayout.PREFERRED\_SIZE)  
 .add(18, 18, 18)  
 .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE)  
 .add(jButton1, org.jdesktop.layout.GroupLayout.PREFERRED\_SIZE, 44, org.jdesktop.layout.GroupLayout.PREFERRED\_SIZE)  
 .add(jButton2, org.jdesktop.layout.GroupLayout.PREFERRED\_SIZE, 44, org.jdesktop.layout.GroupLayout.PREFERRED\_SIZE))  
 .addContainerGap(169, Short.MAX\_VALUE))  
 );  
  
 pack();  
 }// //GEN-END:initComponents  
  
private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event\_jButton2ActionPerformed  
// TODO add your handling code here:  
dispose();  
}//GEN-LAST:event\_jButton2ActionPerformed  
  
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event\_jButton1ActionPerformed  
// TODO add your handling code here:  
  
 Mitglieder m = new Mitglieder();  
 String eingabe;  
   
 String leer = "";  
  
 //StatusField.setText("Delete wird durchgeführt...");  
  
 eingabe = m.getEingabe();  
  
  
  
 //die Methode zum Löschen des Films wird aufgerufen  
 try {  
 showMitgl.mitgliedLoeschen(m);  
 } catch (SQLException ex) {  
 //Logger.getLogger(MitgliederverwaltungGUI.class.getName()).log(Level.SEVERE, null, ex);  
 }  
  
 //StatusField.setText("Delete erfolgreich beendet!");  
  
  
}//GEN-LAST:event\_jButton1ActionPerformed  
  
 /\*\*  
 \* @param args the command line arguments  
 \*/  
 public static void main(String args[]) {  
 java.awt.EventQueue.invokeLater(new Runnable() {  
 public void run() {  
 new MitgliederverwaltungGUI4\_1().setVisible(true);  
 }  
 });  
 }  
  
 // Variables declaration - do not modify//GEN-BEGIN:variables  
 private javax.swing.JButton jButton1;  
 private javax.swing.JButton jButton2;  
 private java.awt.Label label1;  
 // End of variables declaration//GEN-END:variables  
  
}  
  

und hier noch die datei showMitgl.java, wo die Methode mitgliedLoeschen erzeugt wird:

/\*  
 \* To change this template, choose Tools | Templates  
 \* and open the template in the editor.  
 \*/  
  
package mitgliederverwaltung;  
import java.sql.CallableStatement;  
import java.sql.Types;  
import java.util.ArrayList;  
import java.sql.Connection;  
import java.sql.Statement;  
import java.sql.ResultSet;  
import java.sql.SQLException;  
  
/\*\*  
 \*  
 \* @author user  
 \*/  
public class showMitgl {  
  
  
 public static ResultSet suche(){  
 Connection con = Verbindung.getConnection();  
 Statement stmt = null;  
 String query = null;  
 ResultSet rs = null;  
 try {  
 stmt = con.createStatement(ResultSet.TYPE\_SCROLL\_INSENSITIVE,ResultSet.CONCUR\_READ\_ONLY);  
 } catch (SQLException e) {  
 e.printStackTrace();  
 }  
  
  
 query = "select\* from mitgliederanzeige";  
  
  
 //System.out.println(query);  
  
 // verbindung zur datenbank aufrufen und query ausführen  
 try {  
 rs= stmt.executeQuery(query);  
 } catch (SQLException e) {  
 e.printStackTrace();  
 }  
  
 return rs;  
 }  
  
 public static void neuesMitglied(Mitglieder m) {  
 Connection con = Verbindung.getConnection();  
 CallableStatement cstmt = null;  
  
 try{  
 //hier wird die gespeicherte Prozedur aufgerufen  
 cstmt = con.prepareCall("{CALL newMember(?,?,?,?,?,?)}");  
  
 //1. Vorname  
 cstmt.setString(1, m.getVorname());  
 //2. Nachname  
 cstmt.setString(2, m.getNachname());  
 //3. Straße  
 cstmt.setString(3, m.getStrasse());  
 //4. Hausnummer  
 cstmt.setString(4, m.getHausnummer());  
 //5. Ort  
 cstmt.setString(5, m.getOrt());  
 //6. PLZ  
 cstmt.setInt(6, m.getPLZ());  
  
 //Die Prozedur aufrufen  
 cstmt.execute();  
 // Die Prozedur schließen  
 cstmt.close();  
  
 }catch (SQLException e){  
 e.printStackTrace();  
 }  
 }  
  
 public static void mitgliedLoeschen(Mitglieder m) throws SQLException{  
 Connection con = Verbindung.getConnection();  
 Statement stmt = null;  
 String query;  
  
 stmt = con.createStatement();  
  
 query = "execute deleteMember ";  
  
 try {  
 stmt.executeUpdate(query);  
 } catch (SQLException e) {  
 e.printStackTrace();  
 }  
 }  
  
  
}   
  

ich hoffe ihr könnt mir helfen!

danke

Moin,

Deine mitgliedLoeschen-Methode macht gar nichts, da der Befehl komplett falsch ist.
Hier mal ein Link zur Syntax des delete-Befehls:
http://dev.mysql.com/doc/refman/4.1/en/delete.html

Entsprechend dieser muss Dein Query also ein wenig anders gestaltet werden.
Da ich nicht weiß, wie die Daten in der DB hinterlegt sind, kann ich das nur sporadisch anreißen:

**public static void mitgliedLoeschen(Mitglieder m) throws SQLException{
Connection con = Verbindung.getConnection();
Statement stmt = null;
String query;

stmt = con.createStatement();

query = „DELETE * FROM Mitglieder WHERE Name = m.getName()“;

try {
stmt.executeUpdate(query);
} catch (SQLException e) {
e.printStackTrace();
}
}**

Außerdem kommt die Frage auf, warum alles in einem statischen Kontext verarbeitet wird.
Schaut zumindest so aus, als würdest Du objektorienttiert programmieren, da sind die ganzen statics unangebracht.

Gruß,
Puni

hallo

danke schonmal für den ansatz. das problem ist, dass die prozedur deleteMember so aussieht:

USE [Mitgliederverwaltung]   
GO   
/\*\*\*\*\*\* Objekt: StoredProcedure [dbo].[deleteMember] Skriptdatum: 01/30/2009 09:38:58 \*\*\*\*\*\*/   
SET ANSI\_NULLS ON   
GO   
SET QUOTED\_IDENTIFIER ON   
GO   
ALTER procedure [dbo].[deleteMember]   
 @delID int   
as   
 begin   
  
 set nocount on;   
begin tran   
 exec delMitglied @ID = @delID;   
 --exec delMailkontakt @ID = @delID;   
 exec delAdresse @ID = @delID;   
 --exec delTelefonkontakt @ID = @delID;   
commit   
 end; --deleteMember   
   

das heißt es werden mehrere unterprozeduren aufgerufen und daher auch mehrere tabellen angesprochen.

vielleicht kannst du mir jetzt weiterhelfen, was in der showMitgl.java noch fehlt.

danke

lg manu1588

danke funktioniert schon alles :smile: