ist hieran was falsch ? UPDATE Anweisung

Status
Nicht offen für weitere Antworten.
G

Guest

Gast
hi all,

in die neu angelegte Spalte werden einfach keine Werte geschrieben.
Sie ist in Acces einfach leer :(
Es kommt aber auch keine Fehlermeldung :(

Fällt jemandem was auf ?

Code:
try {
			stmt.executeUpdate("ALTER TABLE Mannschaft add AnzAufstellungen INTEGER"); 
			 stmt.executeUpdate("UPDATE Mannschaft SET AnzAufstellungen=10"); // geht ned !!
		}
		catch (SQLException sqe) {System.err.println(sqe); }]

und noch 2 Kleinigkeiten in dem Befehl die stören :

- statt INTEGER NUMBER(4) geht nicht :(
- als Spaltenname 'Anz Aufstellungen' geht (ohne Hichkommas gehts ned), aber in der Acces DB Ansicht heisst die Spalte dann " 'Anz Aufstellungen' " also mit Hochkommas :(

danke im Voraus
 

abollm

Top Contributor
Anonymous hat gesagt.:
[..] in die neu angelegte Spalte werden einfach keine Werte geschrieben.
Sie ist in Acces einfach leer :(
Es kommt aber auch keine Fehlermeldung :(

Fällt jemandem was auf ?

Code:
try {
			stmt.executeUpdate("ALTER TABLE Mannschaft add AnzAufstellungen INTEGER"); 
			 stmt.executeUpdate("UPDATE Mannschaft SET AnzAufstellungen=10"); // geht ned !!
		}
		catch (SQLException sqe) {System.err.println(sqe); }]

und noch 2 Kleinigkeiten in dem Befehl die stören :

- statt INTEGER NUMBER(4) geht nicht :(
- als Spaltenname 'Anz Aufstellungen' geht (ohne Hichkommas gehts ned), aber in der Acces DB Ansicht heisst die Spalte dann " 'Anz Aufstellungen' " also mit Hochkommas :(

danke im Voraus

Wegen der fehlenden Werte versuche einmal, die Statements separat abzusetzen, d.h. zuerst das ALTER-Statement in einem separatem TRY..CATCH-Block.
Zudem probier einmal, ob ein INSERT-Statement für die hinzugefügte Spalte funktioniert.

Außerdem brauchst du ein ALTER-Statement in einem solchen Fall ohnehin nur einmal abzusetzen.
Probier auch einmal ein zusätzliches COMMIT aus. Kann sein, dass deine Access-DB nicht im Auto-Commit-Modus ist.

Wg. NUMBER(4) schau einfach einmal in Access-Doku.

Das mit den Hochkommata ist so in Ordnung, ansonsten könnte die Access-DB das Leerzeichen im Tabellennamen nicht richtig interpretieren.

Hth
 

pro_evo

Aktives Mitglied
ops hatte mich gar ned eingeloggt ...


ja das mit 2 Try catch Blocks hatte ich schon probiert, kein Unterschied.

INSERT wollte ich testen:
Code:
stmt.executeUpdate ("INSERT INTO Mannschaft VALUES (100,'Mustermann','Max','19751025',13);");
aber es kommt der Fehler
java.sql.SQLException: [Microsoft][ODBC Microsoft Access Driver] Datentypen in Kriterienausdruck unverträglich.
hmmm INTEGER muessen ja ned in Hochkommas sein, liegts am Datum ?
Die Tabelle is weiter oben so definiert:
Code:
stmt.execute ("CREATE TABLE Mannschaft (Nr INTEGER PRIMARY KEY, Name VARCHAR (50), Vorname VARCHAR (50), Geburtsdatum DATE)");
+ halt unten dann noch eine Spalte Integer dran ....

Wie meinst du das mit COMMIT , koenntes du ein Bsp. schreiben bzw. wie man es eben benutzt (kenne mich mit sql kaum aus) , dann koennt ich das auch noch testen ...


----------------------
was ich noch selbst (erfolglos), auf einen Tipp von jemand anderem getestet hab:

Na, wenn du Access eh installiert hast, mach doch mal folgendes:

Datenbank in Access öffnen.
Menüpunkt: Abfragen
Neue Abfrage

Und dann klickst du dir deine Abfrage zusammen.
Rechtsklick ins obere Feld, Tabelle hinzufügen, Mannschaft wählen.
Rechtsklick ins untere Feld, Abfragetyp wählen -> Aktualisierungsabfrage

AnzAufstellung von dem Fensterchen oben nach unten in die Tabelle ziehen.
Bei Aktualsierung (Update?) eintragen: 10

und dann oben links auf SQL-Ansicht.
Da steht dann wie Access es für sich selbst zusammenbauen würde, und dann weißt du ob dein Syntax stimmt.


Raus kam dann (zitiere mich mal selbst ;) ) :
Access schustert sich das hier zusammen :
UPDATE Mannschaft SET Mannschaft.AnzAufstellungen = 10;

hab das nun mit
stmt.executeUpdate("UPDATE Mannschaft SET Mannschaft.AnzAufstellungen = 10;");

benutzt, leider ohne Erfolg. (Keine Fehlermeldung .. nix)

Wenn ich die In Access erstellte Abfrage ausführe, werden die Inhalte übrigens geschrieben ...
 

abollm

Top Contributor
Ich hab dein Beispiel mal nachgebaut (MS-Access 2000 [9.0.x]), bin aber leider auch nicht weiter gekommen. Bei mir gibt es bei der ALTER-Anweisung folgende Fehlermeldung:

Code:
Microsoft][ODBC Microsoft Access Driver] Der Entwurf von 'Mannschaft' kann nicht bearbeitet werden. Er befindet sich in einer schreibgeschützten Datenbank.

Die Tabelle habe ich "Mannschaft" genannt. Ich habe schon einiges ausprobiert (Konfiguration auf alle möglichen Parameter gesetzt etc.), bin aber nicht wirklich weiter gekommen. Wie bei dir hat die Anweisung innerhalb Access funktioniert.

Vielleicht weiß jemand anders Rat?
 

abollm

Top Contributor
So, jetzt habe ich den Fehler gefunden (seinen eigenen Code müsste man lesen können...).

Bei mir funktioniert der folgende Code einwandfrei (siehe auch Kommentare), vielleicht hilft er dir ja weiter:

Code:
package msaccess;

import java.sql.*;
import java.text.*;

public class Mannschaft {
	//
	public static void print(double value, String format) {
		DecimalFormat df = new DecimalFormat(format);
		System.out.println(df.format(value));
	}

	public static void main(String[] args) {
		double gehalt;
		String name, vorname;
		Date date;
		int id, ii;
		// 
		try {
			System.out.println("* Treiber laden");
			Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
			System.out.println("* Datenbank-Verbindung beginnen");
			Connection con = DriverManager.getConnection("jdbc:odbc:SPORT");
			//con.setTransactionIsolation(Connection.TRANSACTION_SERIALIZABLE);
			System.out.println("* Statements beginnen");
			Statement stmt = con.createStatement();
			System.out.println("* 1. SQL-Statement beginnen");
			ResultSet rs = stmt.executeQuery("SELECT * FROM Mannschaft");
			ii = 0;
			while (rs.next()) {
				id = rs.getInt(1);
				name = rs.getString(2);
				vorname = rs.getString(3);
				date = rs.getDate(4);
				System.out.println("-> "+id+": "+name+", "+vorname+", "+date);
				ii++;
			}
			System.out.println("* 1. SQL-Statement beenden");
			System.out.println("* Anzahl Datensätze ermitteln und ausgeben");
			System.out.println("Insgesamt wurden " + ii
					+ " Datensaetze gelesen.");
			System.out.println("* 2. SQL-Statement beginnen - ALTER TABLE / UPDATE ...");
			// Für UPDATE -> executeUpdate().
			stmt.executeUpdate("ALTER TABLE Mannschaft add AnzAufstellungen INTEGER"); // geht beim ersten 
                       //Mal einwandfrei, ansonsten Fehler
			
	        stmt.executeUpdate("UPDATE Mannschaft SET AnzAufstellungen=10"); // geht !
	        System.out.println("* 2. SQL-Statement beenden");
			
	        stmt.close();
			System.out.println("* Datenbank-Verbindung beenden");
			con.close();
		} catch (Exception e) {
			System.err.println("*** Fehler: " + e);
		}
	}
}
 

pro_evo

Aktives Mitglied
oh danke für deine Mühe ich hab deins getestet und Ja da sklappt bei mir auch !

ich konnte aber nicht erkennen warum deins funzt :/ ...

EDIT: oooooooooooooooooh doch ... es lag daran dass ich ned geclosed hab ?!

hmmmmmmmmmmmmmmmmmmm

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

hatte ich ned drinnen
 
G

Guest

Gast
pro_evo hat gesagt.:
[..]
EDIT: oooooooooooooooooh doch ... es lag daran dass ich ned geclosed hab ?!
hmmmmmmmmmmmmmmmmmmm
stmt.close();
con.close();

hatte ich ned drinnen

Ja, das kann der Grund gewesen sein, weil in diesem Fall die Transaktion nicht durchgeschrieben wird. Beim SELECT liegt es auf der Hand, weil das keine eigentliche Transaktion ist.

@Mods: Bitte bei Gelegenheit Haken setzen.
 

abollm

Top Contributor
Anonymous hat gesagt.:
Ja, das kann der Grund gewesen sein, weil in diesem Fall die Transaktion nicht durchgeschrieben wird. Beim SELECT liegt es auf der Hand, weil das keine eigentliche Transaktion ist.

@Mods: Bitte bei Gelegenheit Haken setzen.

Hoppla, war eben nicht eingeloggt.
 

pro_evo

Aktives Mitglied
kaum ein Problem gelöst schon das naechste da ...

is immernoch die gleiche Klasse ... aber hier ist anscheined irgendwas falsch :

Code:
ResultSet my_rs = stmt.executeQuery("SELECT AnzAufstellungen FROM Mannschaft") ;
		
			while (my_rs.next()){
				int zufall = (int)(Math.random()*35);
				//System.out.println(my_rs.getInt("AnzAufstellungen"));
				System.out.println(zufall);
				my_rs.updateInt("AnzAufstellungen", zufall);	 // geht ned !!
				//my_rs.updateRow();
			}

so wie ichs ausführ kommt :

java.lang.NullPointerException
at sun.jdbc.odbc.JdbcOdbcBoundCol.setRowValues(Unknown Source)
at sun.jdbc.odbc.JdbcOdbcResultSet.updateInt(Unknown Source)
at sun.jdbc.odbc.JdbcOdbcResultSet.updateInt(Unknown Source)
at blatt04.main(blatt04.java:142)
Exception in thread "main"


irgendwas stimmt bei der updateInt ned ... hab aber k A was .... :?: ohne sie funzt es, er gibt z.B: 20mal nen Zufallszahl aus, also ein ResultSet is da ....
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
Maxim6394 JPA 3.2 & SQLite - LocalDateTime wird falsch geladen Datenbankprogrammierung 1
krgewb H2 - Long um eins falsch Datenbankprogrammierung 13
F SQL Command ist falsch Datenbankprogrammierung 1
JG12111989 DB-Daten werden falsch dargestellt Datenbankprogrammierung 7
Thallius MySQL Was ist falsch an dem Query? Datenbankprogrammierung 2
L Select Anweisung wird falsch interpretiert Datenbankprogrammierung 3
M Rückgabewert aus DB wird falsch gelesen Datenbankprogrammierung 3
S CashedRowSet update - oder was mache ich falsch - Datenbankprogrammierung 6
G Was ist falsch? Datenbankprogrammierung 11
Z MySQL in .jar: was ist an diesem Manifest falsch? Datenbankprogrammierung 5
T compiler fehler: should be mapped with insert="false" update="false" Datenbankprogrammierung 1
bueseb84 Spring Boot : Update Mysql Datenbank Datenbankprogrammierung 1
OnDemand Mysql UPDATE if condition Datenbankprogrammierung 14
OnDemand Select vs Update ins blaue, was ist teurer? Datenbankprogrammierung 11
OnDemand MySQL Trigger löst nicht aus bei Hibernate Update Datenbankprogrammierung 12
R HSQLDB ResultSet update aktualisiert DB, aber nicht das ResultSet Datenbankprogrammierung 2
F UPDATE - Befehl nur in einer Zeile Datenbankprogrammierung 11
L SQL-Statement INSERT INTO ON DUPLICATE KEY UPDATE funktioniert nicht Datenbankprogrammierung 5
M SQL-Statement SQL mit Java, Update Fehler Datenbankprogrammierung 1
OnDemand Update auf Mysql läuft nicht durch Datenbankprogrammierung 30
OnDemand SQL-Statement Update mit innerjoin Datenbankprogrammierung 18
OnDemand Update table SET will nicht Datenbankprogrammierung 9
P MySQL INSERT / UPDATE MySQL - perStoredProcedure oder direkt im Code Datenbankprogrammierung 3
S Update Tabelle aus Textfeld Datenbankprogrammierung 2
S JPA: update von Schlüsselwerten Datenbankprogrammierung 2
ruutaiokwu sql server werte swappen beim update-vorgang mit unique-constraints..? Datenbankprogrammierung 2
M Update Befehl Datenbankprogrammierung 1
S MySQL Nach wiederholtem Update falsche Werte (im Speicher?) Datenbankprogrammierung 1
M SQL-Statement Datentypen in Kriterienausdruck unverdräglich bei Update auf DB von Java aus Datenbankprogrammierung 0
M SQL UPDATE richtig anwenden BITTE um HILFE Datenbankprogrammierung 3
M SQL UPDATE führt zu JAVA Absturz Datenbankprogrammierung 6
S HSQLDB Verbieten eines update auf eine bestimmte reihe Datenbankprogrammierung 4
M Derby/JavaDB Neu geschriebener Eintrag per UPDATE lässt sich nicht unmittelbar abrufen Datenbankprogrammierung 2
S UPDATE user Datenbankprogrammierung 4
R Fehler 2601 trotz SQL-UPDATE ? Datenbankprogrammierung 2
B DB Update via batch Datenbankprogrammierung 3
H Update ganze zeile Datenbankprogrammierung 4
R sqlite UPDATE wirkt nicht aus Java Datenbankprogrammierung 7
S ID Wert von Insert über jdbcTemplate.update Datenbankprogrammierung 3
D Error 1452: Cannot add or update a child row: a foreign key constraint fails Datenbankprogrammierung 15
D SQL Update auf eine Query möglich? Datenbankprogrammierung 4
5 Datenbank Update Datenbankprogrammierung 8
A Oracle Update Befehl in Datenbank anhand einer Schleife Datenbankprogrammierung 8
turmaline Oracle "Häppchenweises" Update durchführen Datenbankprogrammierung 4
C MySQL Problem mit UPDATE Abfrage Datenbankprogrammierung 13
D ArrayIndexOutOfBoundsException bei Update von JTable und Model Datenbankprogrammierung 13
M Access Update Statement Fehler update -> unmöglich? Datenbankprogrammierung 3
J MyBatis - Update Problem Datenbankprogrammierung 4
S JPA: Problem mit Update von Daten Datenbankprogrammierung 7
I Derby/JavaDB Update Fehler Datenbankprogrammierung 4
N Update Prepared Statement Fehler bei Argumenten Datenbankprogrammierung 3
N batch-Update wird nicht durchgeführt Datenbankprogrammierung 2
R MS Access mit Java Problem mit Update Statment Datenbankprogrammierung 13
1 On duplicate Key update Datenbankprogrammierung 3
M DB update geht einfach nicht Datenbankprogrammierung 2
F ResultSet kann Datenbank nicht update, warum? Datenbankprogrammierung 3
G MySQL Update Datenbankprogrammierung 5
M MySQL größere von zwei Zahlen in Update Statement Datenbankprogrammierung 2
T Update an SQL Tabelle ?! Datenbankprogrammierung 10
C MySQL Update funktioniert nicht Datenbankprogrammierung 11
C Update Table1 mit Relationship Table2 Datenbankprogrammierung 6
prakdi einzelnen SQL Eintrag finden der "update" enthält Datenbankprogrammierung 3
V Datenbank Update Datenbankprogrammierung 7
A update methode für datenbank Datenbankprogrammierung 2
M Hibernate: Insert statt Update Datenbankprogrammierung 8
E Update DB; Werte aus Feldern übernehmen Datenbankprogrammierung 5
H Batch Update/Insert Datenbankprogrammierung 4
E Insert oder Update- Prüfung Datenbankprogrammierung 3
H Datenbank Update Datenbankprogrammierung 3
J SQL Abfrage: Verschiedene Werte in einer Spalte mit einem Update Befehl? Datenbankprogrammierung 7
cosmic Problem beim Update einer Oracle DB Datenbankprogrammierung 7
M Update mysql Fehler ?? Datenbankprogrammierung 4
T Problem beim Update in die Access DB Datenbankprogrammierung 9
R Update Time auslesen Datenbankprogrammierung 2
T DB2 delete/update über 2 Tabellen Datenbankprogrammierung 2
K Ist mein UPDATE fehlerhaft? Datenbankprogrammierung 3
G Update-Befehl Fehlerhaft ?? Datenbankprogrammierung 2
G Update Befehl funkt nicht. WARUM? Datenbankprogrammierung 5
S Update Problem Datenbankprogrammierung 3
M Insert Update usw. Datenbankprogrammierung 2
B [SQL] UPDATE oder REPLACE INTO Befehl Datenbankprogrammierung 10
S Update mit null Datenbankprogrammierung 11
H UPDATE . Datenbankprogrammierung 3
S PostgreSQL SELECT/UPDATE etc. Datenbankprogrammierung 4
T Update-Frage Datenbankprogrammierung 11
Y Hibernate - Update bestimmter Spalten Datenbankprogrammierung 2
G update sperren bei client/server anwendung Datenbankprogrammierung 7
T Diverse JDBC Probleme (inner join, rs.last(), update) Datenbankprogrammierung 2
B Update funktioniert nicht Datenbankprogrammierung 8
R Update und Insert Gleichzeitig? Datenbankprogrammierung 2
K MsAccess immer beim zweiten Update java.sql.SQLException Datenbankprogrammierung 28
N Hibernate & hsqldb: Problem bei db-update Datenbankprogrammierung 7
T Problem beim Update vom Resultset + Firebird Datenbankprogrammierung 2
G Update Statement automatisch unterteilen lassen Datenbankprogrammierung 3
W Hibernate Update Problem Datenbankprogrammierung 3
A Syntaxfehler bei update. Datenbankprogrammierung 8
O Update-Problem mit Hibernate-Framework Datenbankprogrammierung 5
L Problem mit Update Datenbankprogrammierung 14
L UPDATE löst Exception aus Datenbankprogrammierung 6
G Problem mit Datums-Format bei UPDATE Datenbankprogrammierung 3

Ähnliche Java Themen


Oben