Textfeld Wert über Button Klick in DB speichern

stko1401

Grünschnabel
Hi Leute ich komm nicht weiter, liegt wohl daran das ich Anfänger bin!

Ich möchte den Wert der in mein Textfeld eingegeben wird über einen Button speichern in meine DB speichern!

Dabei habe ich zwei Klassen in der einen wo mein JFrame dargestellt wird und in der anderen die connection zur db mit dem insert Befehl!
Soweit so gut!

ich fange den text mit getText() ab über die actionperformance, wie bekomme ich nun den gespeicherten String in meine DB****



Code:
public class Button extends javax.swing.JFrame {

    
    public Button() {
        initComponents();
    }
    private void initComponents() {

        jButton1 = new javax.swing.JButton();
        jTextField1 = new javax.swing.JTextField();
        jTextField2 = new javax.swing.JTextField();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

        jButton1.setText("Eingabe");
        jButton1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton1ActionPerformed(evt);
            }
        });

        jTextField1.setText("jTextField1");
        jTextField1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jTextField1ActionPerformed(evt);
            }
        });
        jTextField1.addInputMethodListener(new java.awt.event.InputMethodListener() {
            public void caretPositionChanged(java.awt.event.InputMethodEvent evt) {
            }
            public void inputMethodTextChanged(java.awt.event.InputMethodEvent evt) {
                jTextField1InputMethodTextChanged(evt);
            }
        });

       

    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
     

 //hier hole ich den Text

        String as = jTextField1.getText();

    }

  

    public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new Button().setVisible(true);
            }
        }
    }

   
    private javax.swing.JButton jButton1;
    private javax.swing.JTextField jTextField1;
    private javax.swing.JTextField jTextField2;
  
}



Code:
public Main() {
    try {
        DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());
        connection = java.sql.DriverManager.getConnection(conURL, userName, password);
        ResultSet rs = null;

    //hier insert in db
            Statement stmt = connection.createStatement();
   
//hier soll die variable as den sql String ergänzen

           String sql = "INSERT INTO ja_nein (Auswahl_id, timestamp) VALUES(as,to_date('13.09.2010 13:32:09', 'dd.mm.yyyy hh24:mi:ss'))";

            stmt.executeUpdate(sql);

        connection.close();
        System.out.println("Verbindung abgebaut");
    }catch (Exception exc) {
        System.err.println("Es ist ein Fehler aufgetreten:\n" +
        exc.getMessage());
        exc.printStackTrace();
    try {
        connection.close();
        System.err.println("Verbindung abgebaut");
    } catch (SQLException sqlexc) {
        System.err.println("Verbindung konnte nicht geschlossen werden.");
    } catch (NullPointerException nulexc) {
    System.err.println("Es wurde keine Verbindung geoeffnet.");
    }
    }
}
    public static void main(String[] args) {
        Main t = new Main ();
    }

}


Bin für jede Hilfe dankbar!!
Gruß
 
Zuletzt bearbeitet:
ich hab hier mal n beispiel für dein problem
ist selbst implementiert ... also nicht wundern das es anderst aussieht als deins

Java:
import java.io.*;
import java.net.*;
import java.sql.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.util.*;
public class app implements ActionListener
{
	JTextField jtf;
	Connection con;
	Statement stm;
	JLabel status;
	public static void main(String[] args)
	{
		new app();
	}
	public app()
	{
		JFrame jf=new JFrame();
		jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		jf.setLayout(new FlowLayout());
		jtf=new JTextField(20);
		JButton jb=new JButton("SAVE");
		jb.addActionListener(this);
		jf.setSize(640, 480);
		jf.setLocation(200, 100);
		jf.add(jtf);
		jb.setActionCommand("jb");
		jf.add(jb);
		status=new JLabel("");
		jf.add(status);
		jf.setVisible(true);
		try
		{
			load_con();
		}
		catch(Exception e) { e.printStackTrace(); }
	}
	private void load_con() throws Exception
	{
		Connection con=DriverManager.getConnection("jdbc:mysql://127.0.0.1/jdbc", "jdbc", "jdbc");
		stm=con.createStatement();
	}
	public void actionPerformed(ActionEvent e)
	{
		if(e.getActionCommand().equals("jb"))
		{
			try
			{
				stm.executeUpdate("INSERT INTO jdbc VALUES('"+jtf.getText()+"', '"+(new Timestamp((new java.util.Date()).getTime()))+"')");
				status.setText(jtf.getText()+" INSERTET INTO DATABASE");
			}
			catch(Exception ex)
			{
				status.setText("FAILED");
				ex.printStackTrace();
			}
			jtf.setText("");
		}
	}
}
ist mit MySQL getestet ... sollte aber auch in anderen SQL92-kompatiblen DB's laufen

was dein
Java:
DriverManager.registerDriver()
angeht ... seit Java6 kannst du das weglassen
auch ein Class.forName() ist nicht mehr notwendig ...
java läd automatisch alle vorhandenen SQL-driver solange diese zum start der VM verfügbar sind
auch die angabe der felder in einem SQL-statement ist NUR notwendig wenn du halt auch nur genau diese felder in genau dieser reihenfolge bearbeiten / abfragen willst ...
solange du immer auf alle felder in der vorhandenen reihenfolge zugreifst kannst du das weglassen
 
kleiner nachtrag

zeile 11 im code oben

Java:
Connection con

ist FALSCH ...
ansonsten stimmt der code soweit *verdammt ... ist mir da echt so ein anfänger-fehler passiert ... scheise ^^*

bitte mal diese zeile rausnehmen ... danke
 

Neue Beiträge

Zurück