# INSERT INTO von 2 Textfeldern



## underground (25. Mrz 2007)

Hey Leute, ich habe noch ein kleines Problem zu bewältigen.
wie kann ich den Eintrag von den 2 Textfelden jeweils in eine Spalte SQL DB schreiben???

als Anlage der Code, sorry wenn es nicht der beste code ist, aber ich bin Java gerade am lernen.

zur Erklärung: mit dem Button btnEingabe soll der Text von den 2 Textfeldern txtName und txtVorname in eine Datenbank geschrieben werden. Mit btnCancel wird das geschriebene aus den Textfeldern wieder gelöscht.
und mit btnAnzeigen werden die aktuellen Daten aus der DB gelesen und angezeigt.

vielen dank für eure mühen.
gruß
tom


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

public class connect_frame extends Frame {

	private Label lblName;

	private Label lblVorname;

	private TextField txtName;

	private TextField txtVorname;

	private Button btnEingabe;

	private Button btnAnzeigen;

	private Button btnCancel;

	private JTable table;

	private DefaultTableModel model;

	connect_frame(String titel) {
		super(titel);

		this.setLayout(null);

		lblName = new Label("Name:");
		lblName.setBounds(20, 30, 60, 20);

		lblVorname = new Label("Vorname:");
		lblVorname.setBounds(20, 60, 60, 20);

		txtName = new TextField("", 20);
		txtName.setBounds(90, 30, 100, 20);

		txtVorname = new TextField("", 20);
		txtVorname.setBounds(90, 60, 100, 20);

		btnEingabe = new Button("Return");
		btnEingabe.setBounds(20, 90, 60, 20);

		btnAnzeigen = new Button("Datensätze Anzeigen");
		btnAnzeigen.setBounds(20, 120, 130, 20);

		btnCancel = new Button("Cancel");
		btnCancel.setBounds(90, 90, 60, 20);

		table = new JTable(0, 2);
		table.setBounds(20, 150, 260, 240);
		model = (DefaultTableModel) table.getModel();

		this.add(lblName);
		this.add(lblVorname);
		this.add(txtName);
		this.add(txtVorname);
		this.add(btnEingabe);
		this.add(btnCancel);
		this.add(btnAnzeigen);
		this.add(table);

		btnCancel.addActionListener(new cancel());
		btnAnzeigen.addActionListener(new Anzeigen());
		btnEingabe.addActionListener(new eingabe());
	}

	class eingabe implements ActionListener {
		public void actionPerformed(ActionEvent e) {
			try {
				Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
			} catch (ClassNotFoundException ex) {
				System.out.println("Treiber konnte nicht geladen werden!");
			}

			Connection cn = null;

			String connectionUrl = "jdbc:sqlserver://127.0.0.1:1433;"
					+ "databaseName=java;user=sa;password=Passwort";

			try {
				cn = DriverManager.getConnection(connectionUrl);
			} catch (SQLException ex) {
				System.out
						.println("Es konnte keine Verbindung zur Datenbank hergestellt werden!"
								+ ex.getMessage());
			}

			Statement state = null;

			try {
				state = cn.createStatement();
			} catch (SQLException ex) {
				System.out
						.println("Es konnte leider kein Statement geladen werden!"
								+ ex.getMessage());
			}

			String sql = "SELECT * FROM tJava;";

			try {
				ResultSet result = state.executeQuery(sql);
				while (result.next()) {
					final String vorname = result.getString("vorname");
					final String name = result.getString("name");

					String[] rowData = new String[] { vorname, name };
					model.addRow(rowData);
				}
			} catch (SQLException ex) {
				System.out.println("Der SQL String ist fehlerhaft!"
						+ ex.getMessage());
			} finally {
				if (cn != null) {
					try {
						cn.close();
					} catch (SQLException ex) {
						System.out
								.println("Die Verbindung konnte nicht beendet werden!"
										+ ex.getMessage());
					}
				}
			}
		}
	}

	class cancel implements ActionListener {
		public void actionPerformed(ActionEvent e) {
			txtName.setText("");
			txtVorname.setText("");
		}

	}

	class Anzeigen implements ActionListener {
		public void actionPerformed(ActionEvent e) {
			try {
				Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
			} catch (ClassNotFoundException ex) {
				System.out.println("Treiber konnte nicht geladen werden!");
			}

			Connection cn = null;

			String connectionUrl = "jdbc:sqlserver://127.0.0.1:1433;"
					+ "databaseName=java;user=sa;password=Passwort";

			try {
				cn = DriverManager.getConnection(connectionUrl);
			} catch (SQLException ex) {
				System.out
						.println("Es konnte keine Verbindung zur Datenbank hergestellt werden!"
								+ ex.getMessage());
			}

			Statement state = null;

			try {
				state = cn.createStatement();
			} catch (SQLException ex) {
				System.out
						.println("Es konnte leider kein Statement geladen werden!"
								+ ex.getMessage());
			}

			String sql = "SELECT * FROM tJava;";

			try {
				ResultSet result = state.executeQuery(sql);
				while (result.next()) {
					final String vorname = result.getString("vorname");
					final String name = result.getString("name");

					String[] rowData = new String[] { vorname, name };
					model.addRow(rowData);
				}
			} catch (SQLException ex) {
				System.out.println("Der SQL String ist fehlerhaft!"
						+ ex.getMessage());
			} finally {
				if (cn != null) {
					try {
						cn.close();
					} catch (SQLException ex) {
						System.out
								.println("Die Verbindung konnte nicht beendet werden!"
										+ ex.getMessage());
					}
				}
			}
		}
	}

	public static void main(String[] args) {

		connect_frame frame = new connect_frame(
				"Datenbankanbindung an SQL Server");
		frame.addWindowListener(new WindowAdapter() {
			public void windowClosing(WindowEvent e) {
				System.exit(0);
			}
		});

		frame.pack();
		frame.setSize(300, 400);
		frame.setVisible(true);
	}

}
```


----------



## DP (25. Mrz 2007)

```
state .execute("insert into tabelle (feld1, feld2) values('" + wert1 + "', '" + wert2 + "')");
```

feierabend.

ggf. solltest du bei inserts ein preparedstatement nehmen, da der (u.a.) sonderzeichen in string selbständig korrekt inserten kann.


----------



## underground (25. Mrz 2007)

es geht...es geht....man war ich blöd!!! die ganze zeit rum probiert und alles hatte nicht geklappt...ich danke dir!!!


----------



## underground (25. Mrz 2007)

aber jetzt habe ich noch ein problem und zwar wenn ich auf den button cancel drücke dann leeren sich ja bis jetzt nur die beiden textfelder. kann man es denn nicht auch machen, dass sich die tabelle nicht auch noch mit leert??? aber wie kann man das machen???


ahja und das habe ich immer vergessen zu schreiben: das ist ein echt super forum hier!!! viel gelernt hier hab ich, jap jap =)


----------



## DP (25. Mrz 2007)

ich weiss zwar nicht welchen sinn das machen soll, aber so leerst du deine tabelle:


```
delete tabelle from tabelle
```


----------



## underground (25. Mrz 2007)

meinst du jetzt, dass ich die tabelle im SQL Server lösche???

nee das möchte ich nicht. ich möchte ja gerne die JTable leeren, weil ja immer wenn ich auf anzeigen klicke, die daten an die bisherigen daten angehängt werden. und das möchte ich ja vermeiden.

deshalb fragte ich...


----------



## DP (25. Mrz 2007)

zum anzeigen:


```
select from tabelle
```

zum eingügen


```
insert into tabelle
```

zum löschen:


```
delete from tabelle
```

zum aktualisieren:


```
update tabelle
```

ansonsten mal ein sql-tutorial lesen


----------

