# Insert-Befehl und JTextfield



## !nDeX (30. Sep 2004)

Hallo Leute...

ich habe mal wieder ein neues Problem...die Datenbank steht bereits. Jetzt habe ich das Problem das ich über ein JTextfield ein Insert Befehl ausführen möchte der leider nicht funktioniert, daher poste ich euch mal alles.


```
import java.awt.event.*;
import java.awt.*;
import javax.swing.*;
import java.sql.*;

public class Account extends JFrame implements ActionListener {

	JButton button, button2;
	JLabel ueberschrift, ueberschrift2, begünstigter, straße, ort, geb, kto, bankleitzahl, kredit, pin;
	static JPasswordField pin2;
	static JTextField begünstigter2, straße2, ort2, geb2, kto2, bankleitzahl2, kredit2;
	static String beg3,str3,ort3,geb3,kto3, blz3,kred3;
	static char[] pin3;
	
	
	
	
	public static void main(String[] args) {
		
		new Account( "Bankmanagment");
		
//**************************************Verbindung zur Datenbank***************************************************
		
							  String URL = "jdbc:odbc:Bankmanagement";
							  String benutzername = "test";
							  String passwort = "test";
		
							  try 
							  { 
								  Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); 
							  } 
							  catch(ClassNotFoundException cnfe) 
							  { 
								  System.out.println("Treiber kann nicht geladen werden: "+cnfe.getMessage()); 
							  } 

							  Statement befehl = null;
							  Connection verbindung = null;
		
							  try
							  {
			
								  verbindung = DriverManager.getConnection (URL, benutzername, passwort);
			
								  befehl = verbindung.createStatement();
			
							  }
		
							  catch (Exception e)
							  {
								  System.err.println("Verbindungsfehler zu URL:"+URL+"fehlgeschlagen");
							  }

							  try
							  {
								  
							  
							  
							  	
	// Der INSERT Befehl ************************						  	ResultSet datenmenge;
								datenmenge = befehl.executeQuery("INSERT INTO Account(Name, Vorname, Straße, PLZ, Ort, Geburtsdatum, Kontonummer, BLZ, Kreditinstitut, PIN) VALUES('beg3','beg3','str3','ort3','ort3','geb3',kto3, blz3,'kred3',pin3)"); <------------------------------ Das ist der Insert Befehl der die Daten mittels der Oberfläche in die Datenbank eintragen soll!
		
		
						
		
						
									  // Einzelne Datensätze ausgeben
		
									 /* while(datenmenge.next())
									  {
										  
					

			
			
									  }*/
				
									  verbindung.close();
		
		
									  }
									  catch (Exception e)
									  {
										  e.printStackTrace();
			
									  }

//**************************************Verbindungsende der Datenbank***************************************************
		
		
		
		
		
		
		
		
		
		
		
		
		
	}
	
	public Account( String titel )
	{
		super(titel);
		
		this.setSize(1024,768);
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		erzeugeAnsicht();
		this.show();
		
	}
	
		
	
	void erzeugeAnsicht()
	{
		this.getContentPane().setLayout(null);
		
		ueberschrift =  new JLabel("Account anlegen");
		ueberschrift.setFont(new Font("Verdana", Font.PLAIN,20));
		ueberschrift.setBounds(10,10,200,50);
		
		ueberschrift2 =  new JLabel("_____________________________________");
		ueberschrift2.setFont(new Font("Verdana", Font.PLAIN,20));
		ueberschrift2.setBounds(10,15,600,50);
		
		begünstigter =  new JLabel("Name, Vorname / Firma");
		begünstigter.setFont(new Font("Verdana", Font.PLAIN,10));
		begünstigter.setBounds(10,80,320,20);
		
		begünstigter2 = new JTextField();
		begünstigter2.setBounds(10,100,320,20);
		
		
		straße =  new JLabel("Straße");
		straße.setFont(new Font("Verdana", Font.PLAIN,10));
		straße.setBounds(10,130,320,20);
		
		straße2 = new JTextField();
		straße2.setBounds(10,150,320,20);
		
		ort =  new JLabel("PLZ, Ort");
		ort.setFont(new Font("Verdana", Font.PLAIN,10));
		ort.setBounds(10,180,320,20);
		
		ort2 = new JTextField();
		ort2.setBounds(10,200,320,20);
		
		geb =  new JLabel("Geburtsdatum");
		geb.setFont(new Font("Verdana", Font.PLAIN,10));
		geb.setBounds(10,230,320,20);
		
		geb2 = new JTextField();
		geb2.setText("dd.mm.yyyy");
		geb2.setBounds(10,250,100,20);
		
		
		kto = new JLabel("Kontonummer");
		kto.setFont(new Font("Verdana", Font.PLAIN,10));
		kto.setBounds(10,280,320,20);
		
		kto2 = new JTextField();
		kto2.setBounds(10,300,100,20);
		
		bankleitzahl =  new JLabel("Bankleitzahl");
		bankleitzahl.setFont(new Font("Verdana", Font.PLAIN,10));
		bankleitzahl.setBounds(10,330,320,20);
		
		bankleitzahl2 = new JTextField();
		bankleitzahl2.setBounds(10,350,100,20);
		
		kredit =  new JLabel("Kreditinstitut");
		kredit.setFont(new Font("Verdana", Font.PLAIN,10));
		kredit.setBounds(10,380,320,20);
		
		kredit2 = new JTextField();
		kredit2.setBounds(10,410,320,20);
		
		pin =  new JLabel("PIN-Nummer");
		pin.setFont(new Font("Verdana", Font.PLAIN,10));
		pin.setBounds(10,440,320,20);
		
		pin2 = new JPasswordField();
		pin2.setEchoChar('*');
		pin2.setBounds(10,470,100,20);
		
			
		
		button = new JButton("Speichern");
		button.setBounds(160,650,150,30);
		
		button2 = new JButton("Abrechen");
		button2.setBounds(10,650,150,30);
		
		
		
		getContentPane().setBackground(new Color(255,230,150));
		this.getContentPane().add(ueberschrift);
		this.getContentPane().add(ueberschrift2);
		this.getContentPane().add(begünstigter);
		this.getContentPane().add(begünstigter2);
		this.getContentPane().add(straße);
		this.getContentPane().add(straße2);
		this.getContentPane().add(ort);
		this.getContentPane().add(ort2);
		this.getContentPane().add(geb);
		this.getContentPane().add(geb2);
		this.getContentPane().add(kto);
		this.getContentPane().add(kto2);
		this.getContentPane().add(bankleitzahl);
		this.getContentPane().add(bankleitzahl2);
		this.getContentPane().add(kredit);
		this.getContentPane().add(kredit2);
		this.getContentPane().add(pin);	
		this.getContentPane().add(pin2);
		this.getContentPane().add(button);
		this.getContentPane().add(button2);
		
		
		begünstigter2.addActionListener(this);
		this.getContentPane().add(button);
		this.getContentPane().add(button2);
		
		
		button.addActionListener(this);
		button2.addActionListener(this);
		begünstigter2.addActionListener(this);
		
		
		
		
			
					
	}
	public void actionPerformed(ActionEvent arg0) {
		
		JButton j = (JButton)arg0.getSource();
		int erg, account;
		
		if(j == button2)
		{
			erg = JOptionPane.showConfirmDialog(Account.this, "Sind Sie sicher das sie abrechen und zurückkehren möchten?", "Bestätigung", 
										  JOptionPane.YES_NO_OPTION,
										  JOptionPane.QUESTION_MESSAGE);
				
			if( erg == JOptionPane.YES_OPTION)
			{
				beg3 = begünstigter2.getText();
				str3 = straße2.getText();
				ort3 = ort2.getText();
				geb3 = geb2.getText();
				kto3 = kto2.getText();
				blz3 = bankleitzahl2.getText();
				kred3 = kredit2.getText();
				pin3 = pin2.getPassword();
				
				
				
				new Banking( "Bankmanagement");	
				
			}
		}
		
				
		else
		{
			account = JOptionPane.showConfirmDialog(Account.this, "Sind Sie sicher das sie Ihre Daten speichern möchten?", "Bestätigung", 
										  JOptionPane.YES_NO_OPTION,
									      JOptionPane.QUESTION_MESSAGE);
									      
			if( account == JOptionPane.YES_OPTION)
			{
				new Banking( "Bankmanagement");
			}						      
		}
	}
}
```

Vielleicht weiß euch jemand rat ob da ein Fehler drin ist.

mfg


----------



## !nDeX (30. Sep 2004)

Ich habe noch die Fehlermeldung vergessen....


```
java.sql.SQLException: [Microsoft][ODBC Microsoft Access Driver] 3 Parameter wurden erwartet, aber es wurden zu wenig Parameter übergeben.
	at sun.jdbc.odbc.JdbcOdbc.createSQLException(JdbcOdbc.java:6879)
	at sun.jdbc.odbc.JdbcOdbc.standardError(JdbcOdbc.java:7036)
	at sun.jdbc.odbc.JdbcOdbc.SQLExecDirect(JdbcOdbc.java:3065)
	at sun.jdbc.odbc.JdbcOdbcStatement.execute(JdbcOdbcStatement.java:338)
	at sun.jdbc.odbc.JdbcOdbcStatement.executeQuery(JdbcOdbcStatement.java:253)
	at Account.main(Account.java:61)
```


----------



## P3AC3MAK3R (30. Sep 2004)

Schränke doch bitte die Breite von gepostetem Code zukünftig ein. So ist das mehr als unübersichtlich...


----------



## !nDeX (30. Sep 2004)

Stimmt hab ich erst jetzt gesehen.

Wenn ich wüsste wie man ein Beitrag editiert würde ich das gern machen 

Sorry


----------



## P3AC3MAK3R (30. Sep 2004)

!nDeX hat gesagt.:
			
		

> Stimmt hab ich erst jetzt gesehen.
> 
> Wenn ich wüsste wie man ein Beitrag editiert würde ich das gern machen
> 
> Sorry


Schau Dich einfach mal nach der "Editieren"-Schaltfläche um. 

Diese findest Du jeweils in der rechten oberen Ecke eines Postings.


----------



## !nDeX (30. Sep 2004)

Hmm bei mir steht nur Zitieren und Downloaden... liegt vielleicht daran das ich nur gast bin  :shock: .

Aber wenn Du mir helfen könntest mit meinem Problem würde ich dir SEHR dankbar sein   .


----------



## abollm (30. Sep 2004)

In dieser Zeile (von mir umformatiert, deshalb auch auf mehrere Zeilen verteilt) ist der Fehler:


```
datenmenge = befehl.executeQuery("INSERT INTO 
                         Account(Name, Vorname, Straße, PLZ, Ort, Geburtsdatum, Kontonummer, 
                         BLZ, Kreditinstitut, PIN) 
                         VALUES('beg3','beg3','str3','ort3','ort3','geb3',kto3, blz3,'kred3',pin3)");
```

Bei den Spalten-Variablen "kto3", "pin3"und "blz3" fehlen die umschließenden Hochkommata.


----------

