Problem beim Update in die Access DB

Status
Nicht offen für weitere Antworten.

tigerlily

Mitglied
Hallo an alle,

bin noch ein Java Neuling. Bis jetzt konnte ich mich gut durchbeißen :)
Nun habe ich ein Problem. Ich möchte ein Update auf eine Access Tabelle ausführen.
Hier mal mein Java Code:

Java:
public int updateVertragBeginnAblaufPraemie(String beginn,String ablauf, String praemie, String VNr)
	{
		Statement st = null;
		int erg;
		
		try {
			st = connection.createStatement();
		} catch (SQLException e) {
			e.printStackTrace();
		}


		try {
			//In der Tabelle vertrag wird ein Update auf die Felder: beginn,ablauf und praemie durchgeführt
			//anhand der Vertragsnummer
			erg = st.executeUpdate("UPDATE vertrag set beginn='"+beginn+"',ablauf ='"+ablauf+"', praemie = '"+praemie+"' where vnr_norm = '"+VNr+"'");

			return erg;
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			return 0;
		}

	}

Im Feld Beginn und Ablauf steht sowas wie "20101983" drin.

Sobald ich das Update ausführen will bekomme ich folgende Meldung in Eclipse:

java.sql.SQLException: [Microsoft][ODBC Visual FoxPro Driver]Data type mismatch.
at sun.jdbc.odbc.JdbcOdbc.createSQLException(JdbcOdbc.java:6957)
at sun.jdbc.odbc.JdbcOdbc.standardError(JdbcOdbc.java:7114)
at sun.jdbc.odbc.JdbcOdbc.SQLExecDirect(JdbcOdbc.java:3110)
at sun.jdbc.odbc.JdbcOdbcStatement.execute(JdbcOdbcStatement.java:338)
at sun.jdbc.odbc.JdbcOdbcStatement.executeUpdate(JdbcOdbcStatement.java:288)
usw.

Wenn ich das Update Statement mit den Werten die die Funktion erhält direkt in die Access Datenbank schmeiße funktioniert es ohne Probleme. Wieso geht es aus Java nicht? Das Feld Beginn und Ablauf sind Datum/Uhrzeit Felder. Habe die Vermutung das dies nicht als String durchgeht. Wäre dankbar wenn mir einer einen Denkanstoß geben kann.:toll:

lg

dany
 

velaluka

Aktives Mitglied
Hallo,
sehr wahrscheinlich wird dein Datum String nicht so aufgebaut sein, wie Access es gerne hätte :noe:
Lösung wäre:
SimpleDateFormat um ein Datum passend zu formatieren. Ist allerdings nicht die tollste Lösung...
besser wäre ein PreparedStatement zu verwenden. Dort könntest du deinem update Statement gleich die passenden(Java) Typen geben.
Ein BSP. Ist zwar kein Update funktioniert aber genauso....
Hoffe es hilft
Ciao velaluka
 

tigerlily

Mitglied
@mg_666: Die Where Klausel ist in Ordnung liegt einfach denke ich mal daran das in der DB beginn und ablauf Feld ein Datum/Uhrzeit ist und ich einen String übergebe.

Wie gesagt wenn ich ich das Statement was ich mir in Java baue direkt in Access werfe, updatet Access den Datensatz. Rufe ich das Statement aus meiner Java Applikation heraus auf, dann knallt es mir um die Ohren. Data type mismatched :(

Werde mal die Prepared Statements ausprobieren.

lg

dany
 

velaluka

Aktives Mitglied
Hallo tigerlily,
Wie gesagt wenn ich ich das Statement was ich mir in Java baue direkt in Access werfe, updatet Access den Datensatz.
Bist du dir sicher das es genau gleich ist? Hast du dir dein Java Update mal auf der Konsole ausgeben lassen? Prinzipiel sollte es auch mit "Strings" funktionieren, am Ende sollte die DB:lol:, also Access die Strings in die richtigen Typen wandeln, ist ja nicht anders als mit dem Frontend von A.
Aber besser ist Prepared Statements, gerade wenns mal ne update mehr werden soll:D
Ciao velaluka
 

tigerlily

Mitglied
@velaluka: Access will mal eine DB werden :D

Also ich habe jetzt folgendermaßen mein Update umgebaut:

Java:
	public int updateVertragBeginnAblaufPraemie(String beginn,String ablauf, String praemie, String VNr)
	{
			
		    PreparedStatement pstmt = null;
		    
		    try {
		      String query = "UPDATE vertrag SET beginn = ?,ablauf = ?,praemie= ? where vnr_norm = ?";
		      pstmt = connection.prepareStatement(query); // create a statement
		      pstmt.setString(1,beginn); // set input parameter 1
		      pstmt.setString(2, ablauf); // set input parameter 2
		      pstmt.setString(3, praemie); // set input parameter 2
		      pstmt.setString(4, VNr); // set input parameter 2
		      pstmt.executeUpdate(); // execute update statement
		      
		      return 1;
		      
		    }catch (Exception e) 
		    {
		       e.printStackTrace();
		    } finally 
		    {
		        try {
					pstmt.close();
				} catch (SQLException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
		      
		    }
			return 0;

Soweit so gut, irgendwie ändert es aber nichts an der Tatsache das es immer noch nicht geht.

Hier mal der Code den ich direkt in Access absetze:

SQL:
UPDATE vertrag set beginn="20101983" ,ablauf = "01062009", praemie ="000000006240"  where vnr_norm ="2200363526"

Das geht. hmm, irgendwie denk Probleme heute, ist ja schon Freitag ;)

lg

dany
 

velaluka

Aktives Mitglied
Juhu tigerlily,
@velaluka: Access will mal eine DB werden
ja wielange sollen wir den noch warten. Geht zwar schwer von den Lippen aber MSSql ist doch auch brauchbar:oops:...........

Schön das du ein PrepareSt. nimmst, jetzt solltes du nur noch die passenden Datentypen setzen und nicht wieder String ;)

Java:
 public int updateVertragBeginnAblaufPraemie(String beginn,String ablauf, String praemie, String VNr)
    {
            
            PreparedStatement pstmt = null;
            
            try {
              String query = "UPDATE vertrag SET beginn = ?,ablauf = ?,praemie= ? where vnr_norm = ?";
              pstmt = connection.prepareStatement(query); // create a statement
              pstmt.setDate(1,beginn); // Date oder Timestamp
              pstmt.setTimestamp(2, ablauf); // kann ich leider so nicht sagen
              pstmt.setLong(3, praemie); // set input parameter 2
              pstmt.setString(4, VNr); // set input parameter 2
              pstmt.executeUpdate(); // execute update statement
              
              return 1;
              
            }catch (Exception e) 
            {
               e.printStackTrace();
            } finally 
            {
                try {
                    pstmt.close();
                } catch (SQLException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
              
            }
            return 0;
Man achte auf die Setter vom PreparedStatement...
Ciao velaluka

Nachtrag: Eventuell jetzt schon die entsprechenden typen der Methode übergeben...
 
Zuletzt bearbeitet:

tigerlily

Mitglied
Hallo,

irgendwie bin ich zu blöde für das Datumsformat. Ich habe gelesen dass das
Datumsformat in Access folgendermaßen aussehen muss

Datumswerte werden in MS Access mit '#' dem Gartenzaunzeichen begrenzt.
-> #01/10/2001# -> 01.10.2001

wie bekomme ich jetzt meinen String in solch ein Format????:L
 

velaluka

Aktives Mitglied
Hallo tigerlily,
wie kommen den die Strings zur Methode. Wird irgendwo ein Date zu einen String, oder sind das Werte die nur als Strings vorhanden?
Falls du ein Date hast, kannst du es so wandeln
Java:
	    	  Date dat = new Date();
	    	  SimpleDateFormat sdf = new SimpleDateFormat("#dd/MM/yyyy#");
	    	  System.out.println(sdf.format(dat));
, wenn du einen String behälts kannst du mit CDate den String in ein Date wandeln.
Ciao velaluka
 

tigerlily

Mitglied
Hallo,

die Strings die ich übergebe sind Strings aus einer Txt Datei die ich entsprechend mit substring herausschneide. Diese Strings enthalten so was wie:

20101983 soll dann in tabelle als -> 20.10.1983 eingefügt werden.

danke schonmal für die Antwort. Werde das mal ausprobieren.

lg

dany
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
cosmic Problem beim Update einer Oracle DB Datenbankprogrammierung 7
T Problem beim Update vom Resultset + Firebird Datenbankprogrammierung 2
N HSQLDB Problem beim Treiberladen im Jar Datenbankprogrammierung 6
M Problem beim Erstellen einer Query Datenbankprogrammierung 7
S Problem beim Anlegen einer Tabelle Datenbankprogrammierung 5
T Problem beim schreiben von daten Datenbankprogrammierung 4
D MySQL Problem beim einfügen von Double-Zahlen Datenbankprogrammierung 4
M Problem beim Importieren einer Datenbank Datenbankprogrammierung 3
A Problem beim Laden des Treibers Datenbankprogrammierung 5
G Problem beim einfügen in der Datenbank Datenbankprogrammierung 4
G Problem beim Schreiben eines Dateipfads in MySQL-DB Datenbankprogrammierung 9
M "SQL - Apache" Problem beim laden des Applets Datenbankprogrammierung 4
D Problem beim Zugriff auf eine Oracle-DB Datenbankprogrammierung 23
A Datenbankzugriff per Applet - Problem beim Treiber laden Datenbankprogrammierung 6
E Problem beim laden des JDBC Driver bzw der Database Datenbankprogrammierung 8
M Problem beim erstellen der DB Datenbankprogrammierung 3
G Problem beim Zugriff SQL 2000 Datenbankprogrammierung 2
K Problem beim Einlesen von Werten aus einem Textfeld Datenbankprogrammierung 11
E Problem beim Datenbank-Design (relational) Datenbankprogrammierung 10
J PC-Start Problem JDBC Connection Datenbankprogrammierung 10
C Problem mit Apache Poi Datenbankprogrammierung 6
N HSQLDB Problem mit Eclipselink in runnable Jar Datenbankprogrammierung 10
P GroupLayout-Problem Datenbankprogrammierung 12
F XAMPP max connections problem Datenbankprogrammierung 6
C MySQL Problem in phpMyAdmin Oberfläche Datenbankprogrammierung 5
C Problem with INSERT.............ON DUPLICATE KEY Datenbankprogrammierung 3
C Problem with insertion in database. Datenbankprogrammierung 7
F Problem mit Hibernate c3p0 Datenbankprogrammierung 2
W Problem mit Insert in zwei Tabellen Datenbankprogrammierung 8
G MySQL Problem mit MySQL verbindung Datenbankprogrammierung 8
A kleines Problem Datenbankprogrammierung 6
T Problem mit Datenbankverbindung Datenbankprogrammierung 22
V Derby/JavaDB updateRow Problem Datenbankprogrammierung 0
G MySQL Java Problem: Nullpointer Exception obwohl Daten vorhanden sind? Datenbankprogrammierung 2
Nuiton EmbeddedDriver Problem Datenbankprogrammierung 6
A MongoDB Passwort Problem Datenbankprogrammierung 0
O HSQLDB Hibernate Criteria Problem Datenbankprogrammierung 3
F MySQL JDBC Problem Datenbankprogrammierung 5
Anfänger2011 Datenbankstruktur/aufbau (theoretisches Problem) Datenbankprogrammierung 5
M Derby/JavaDB Drop Database problem Datenbankprogrammierung 3
M Derby/JavaDB NOT LIKE problem Datenbankprogrammierung 19
N HSQLDB Problem mit EntityManager Datenbankprogrammierung 7
B MySQL JPAContainer Problem Datenbankprogrammierung 4
K Eclipse Apache Derby Treiber Problem Datenbankprogrammierung 4
C Problem oder Denkfehler mit H2-Database Datenbankprogrammierung 3
E Wie kann man das Problem mit der BLOB-Spalte lösen? Datenbankprogrammierung 1
M Problem mit jcouchdb und CouchDB - UTF8 kein gültiger Zeichentyp Datenbankprogrammierung 4
T MySQL Problem mit Datenbankanbindung Datenbankprogrammierung 4
M INSERT-Problem = integrity constraint violation: foreign key no parent Datenbankprogrammierung 5
P SQL Query Problem Datenbankprogrammierung 14
A MySQL Problem bei Tabelle ausgeben Datenbankprogrammierung 3
Q MySQL JDBC-Treiber Problem Datenbankprogrammierung 2
B SQLite Problem bei Planung der Datenbank [Jeopardy] Datenbankprogrammierung 3
A Problem mit dem Import und Export von Bildern Datenbankprogrammierung 4
P Oracle Problem mit Umlauten Datenbankprogrammierung 9
A Problem mit Create-Statement Datenbankprogrammierung 9
D Problem mit COLUMN_IDENTIFIERS Datenbankprogrammierung 8
Bluedaishi MySQL Abfrage Problem :-) Datenbankprogrammierung 21
M Problem mit mehreren Datasourcen Datenbankprogrammierung 3
R Resultset.last() Problem Datenbankprogrammierung 12
M Problem GroupBy Datenbankprogrammierung 3
S CURRENT_DATE problem Datenbankprogrammierung 2
M Problem mt JPA Id-Generators Datenbankprogrammierung 18
Gossi Oracle Problem mit group by... Datenbankprogrammierung 22
M MySQL SQL Abfrage Problem Datenbankprogrammierung 6
R MS-SQL Express Login-Problem Datenbankprogrammierung 8
P Lazy-Fetchig und Session-Problem mit Hibernate Datenbankprogrammierung 4
C Hibernate ManyToMany zusammengesetzter Primärschlüssel, problem. Datenbankprogrammierung 3
M Problem mit HQL Syntax Datenbankprogrammierung 5
K Db4o Delete Problem Datenbankprogrammierung 11
Mike90 Deadlock/Lock Problem Datenbankprogrammierung 4
T Access 32bit on Win7 64Bit ODBC Problem Datenbankprogrammierung 1
C unverständliches DB Problem (Es ist kein temporärer Systemtabellenbereich mit einer ausreichenden..) Datenbankprogrammierung 5
S ODBC Treiber Problem/oder unvermögen Datenbankprogrammierung 18
J Problem bei Boolean in PreparedStatement Datenbankprogrammierung 5
C MySQL Problem mit UPDATE Abfrage Datenbankprogrammierung 13
C Problem mit SQL-Abfrage Datenbankprogrammierung 5
K Problem mit Datenbankverbindung via Eclipse Datenbankprogrammierung 2
A Problem mit Eintragen von Daten in eine Datenbank mittels DAO Datenbankprogrammierung 4
S Oracle Problem mit PreparedStatement.setString(1,"str") Datenbankprogrammierung 10
B MySQL Problem mit Datenbankanbindung an MySQL Datenbankprogrammierung 2
N Problem bei Erstellung eines Index Datenbankprogrammierung 12
C Hibernate Property-Problem Datenbankprogrammierung 5
J MyBatis - Update Problem Datenbankprogrammierung 4
S JPA: Problem mit Update von Daten Datenbankprogrammierung 7
c_sidi90 Hibernate Problem Table doesnt excist Datenbankprogrammierung 8
M Problem mit JPA - OneToMany-Relation Datenbankprogrammierung 3
I Hibernate: Composite Foreign Key Problem Datenbankprogrammierung 14
S JPA OptimisticLocking Problem Datenbankprogrammierung 11
I Derby/JavaDB Problem mit Befüllung von Tabelle Datenbankprogrammierung 7
JavaKaffee Derby/JavaDB Quartz-WebAnwendung - Connection/Treiber Problem Datenbankprogrammierung 47
I Problem mit ResultSet Datenbankprogrammierung 2
L Excel in MySQL importieren Problem Datenbankprogrammierung 5
R MS Access mit Java Problem mit Update Statment Datenbankprogrammierung 13
S MySQL Problem mit SELECT bzw encoding Datenbankprogrammierung 4
M MySQL getConnection - Verbindung Problem Datenbankprogrammierung 2
K Hibernate + MySQL Problem... Datenbankprogrammierung 2
I MySQL MySQL – Proxy Problem Datenbankprogrammierung 4
M Problem mit Hibernate und Named Query Datenbankprogrammierung 1
M Problem mit Hibernate und Access Datenbankprogrammierung 9

Ähnliche Java Themen

Neue Themen


Oben