Datenbankzugriff - Leere Zeile einfügen

Djangoo

Neues Mitglied
Moin Moin,

erst einmal ein freundliches Hallo. Ich bin neu hier im Forum und hoffe, dass ihr mir bei einem kleinen Problem weiterhelfen könnt.
Ich bin gerade dabei ein Java GUI Programm mit zu schreiben, mit dem ich auf eine Oracle Datenbank zugreifen kann.
Soweit funktioniert auch schon alles, bis auf das Einfügen eines neuen Datensatzes in die Tabelle "Kunde".
Ich möchte einen leeren Kundenn einfügen, also nur die ID vergeben. Das Problem ist, dass immer der zuletzt angezeigte Kunde eigefügt wird. Ich habe versucht leere Felder durch das ("") einzufügen.

Hier mal ein Code Ausschnitt, der sich auf die Eingabemaske bezieht:
Java:
Action neu = new AbstractAction("Neu") {

			public void actionPerformed(ActionEvent e) {


				kundenId.setText("");
				name.setText("");
				vorName.setText("");
				telefon.setText("");
				straße.setText("");
				adresszusatz.setText("");
				plz.setText("");
				ort.setText("");


				a.insert();


				kundenId.setText(String.valueOf(a.getkundenId()));


			}

Und hier die Funktion, die den INSERT absetzt:

Java:
void insert() {

		try {
			Class.forName("oracle.jdbc.driver.OracleDriver");
		} catch (ClassNotFoundException e) {
			System.out.println("Fehler bei ODBC-JDBC-Bridge" + e);


		}


		Connection con;
		Statement stmt;
		ResultSet rSet;


		try {
			String url = "jdbc:oracle:thin:@oragdv3vm.ham.gdv.org:1521:entwdb";
			con = DriverManager.getConnection(url, "ausbildung", "ausbildung");


			stmt = con.createStatement();


			String sqlQuery = "SELECT MAX(kunden_id) AS kunden_id FROM kunde";
			rSet = stmt.executeQuery(sqlQuery);
			while (rSet.next()) {
				kundenId = rSet.getInt("kunden_id");


				kundenId = kundenId + 1;
			}
			PreparedStatement ps = con
					.prepareStatement("INSERT INTO kunde (kunden_id, vorname, nachname, telefon, straße, adresszusatz, plz, ort) VALUES (?, ?, ?, ?, ?, ?, ?, ?)");


			ps.setInt(1, kundenId);
			ps.setString(2, vorName);
			ps.setString(3, nachName);
			ps.setString(4, telefon);
			ps.setString(5, straße);
			ps.setString(6, adresszusatz);
			ps.setString(7, plz);
			ps.setString(8, ort);
			ps.executeQuery();


			System.out.println(ps.getUpdateCount() + " " + "Zeilen eingefügt");


			stmt.close();
			con.close();
			ps.close();


		} catch (SQLException e) {
			System.out.println("Fehler bei Tabellenabfrage" + e);


		}


	}

Ich hoffe ihr könnt mir helfen.
 
Das Problem wird sein das "vorName" aus dem 1.Snippet ein Textfeld sein wird, dieses wird von dir auf "" gesetzt.
In der Klasse ? (von Objekt a) ist "vorName" aber vom Typ String und wird nicht durch die Änderung des Textfeldes beeinflusst.

Ich nehme an mit dem Objekt a hast du den zuletzte angezeigten Kunden aus der Datenbank ausgelesen, daher stehen auf den ganzen Strings noch die Werte vom zuletzt angezeigten Kunden drauf, diese musst du auf "" setzen.

Verbesserungen:
Verwende nicht "einzelne Strings" um deinen Kunden abzubilden sondern eine Klasse "Kunde". Damit lassen sich solche Fehler vermeiden.
Um eine Kunden Id automatisch zu vergeben könntest du Mittel verwenden welche die Datenbank zur Verfügung stellt -> Stichwort: Auto Increment
 
Super Danke. Genau das war es. Ich habe das jetzt mal geändert und auch eine Klasse Kunde anstelle von einzelnen Strings erstellt.
Läuft endlich ohne Probleme.
 

Neue Themen


Zurück
Oben