Mit Prepared Statement in MDB schreiben

Status
Nicht offen für weitere Antworten.
G

Gast00007

Gast
Hallo,

ich versuche mittels eines PreparedStatements einen Datensatz in eine MDB Datei zu schreiben... Nur leider klappt das nicht so ganz...

Folgender Code:

Code:
private void setMitarbeiter() {
		
		try {
	    	con = DBConn.openDB();			
		    System.out.println("Connection Successful ");
	    } catch (Exception e) {	    	
	    	e.printStackTrace();
	    	System.out.println("Keine Verbindung zur Datenbank");
	    }
	    try {
	    	PreparedStatement speicherMitarbeiter = con.prepareStatement( 
	    	  "INSERT into PERSONAL values ('?','?','?','?','?','?','?','?','?')");
	    	System.out.println(nachname.getText());
	    	speicherMitarbeiter.setString( 1, "Nachname" ); 
	    	speicherMitarbeiter.setString( 2, "Vorname" );
	    	speicherMitarbeiter.setString( 3, "position" );
	    	speicherMitarbeiter.setString( 4, "Gebdatum" );
	    	speicherMitarbeiter.setString( 5, "Einstdatum" );
	    	speicherMitarbeiter.setString( 6, "Strasse" );
	    	speicherMitarbeiter.setString( 7, "plz" );
	    	speicherMitarbeiter.setString( 8, "ort" );
	    	speicherMitarbeiter.setString( 9, "tel" );
	    	speicherMitarbeiter.executeUpdate();
	    	System.out.println(speicherMitarbeiter.toString());
	    	
	    	speicherMitarbeiter.close();
	    	con.close();
	    	System.out.println("Datenbankverbindung getrennt");
	    	
	    }catch (Exception e) {
	    	
	    }

Dazu erhalte ich folgende Ausgabe vom JDBC Treiber, sobald ich die Methode ausführe:

DriverManager.getConnection("jdbc:eek:dbc:DRIVER={Microsoft Access Driver (*.mdb)};DBQ=C:\db.mdb")
trying driver[className=sun.jdbc.odbc.JdbcOdbcDriver,sun.jdbc.odbc.JdbcOdbcDriver@186db54]
*Driver.connect (jdbc:eek:dbc:DRIVER={Microsoft Access Driver (*.mdb)};DBQ=C:\db.mdb)
JDBC to ODBC Bridge: Checking security
No SecurityManager present, assuming trusted application/applet
JDBC to ODBC Bridge 2.0001
Current Date/Time: Mon Dec 08 19:17:29 CET 2008
Loading JdbcOdbc library
Allocating Environment handle (SQLAllocEnv)
hEnv=58266856
Allocating Connection handle (SQLAllocConnect)
hDbc=58267024
Connecting (SQLDriverConnect), hDbc=58267024, szConnStrIn=DRIVER={Microsoft Access Driver (*.mdb)};DBQ=C:\db.mdb
*Connection.getMetaData
*DatabaseMetaData.getDriverName
Get connection info string (SQLGetInfo), hDbc=58267024, fInfoType=6, len=300
odbcjt32.dll
*DatabaseMetaData.getDriverVersion
Get connection info string (SQLGetInfo), hDbc=58267024, fInfoType=7, len=300
04.00.6305
*DatabaseMetaData.getDriverName
Get connection info string (SQLGetInfo), hDbc=58267024, fInfoType=6, len=300
odbcjt32.dll
Driver name: JDBC-ODBC Bridge (odbcjt32.dll)
*DatabaseMetaData.getDriverVersion
Get connection info string (SQLGetInfo), hDbc=58267024, fInfoType=7, len=300
04.00.6305
Driver version: 2.0001 (04.00.6305)
Caching SQL type information
*Connection.getMetaData
*DatabaseMetaData.getTypeInfo
Allocating Statement Handle (SQLAllocStmt), hDbc=58267024
hStmt=58270504
Get type info (SQLGetTypeInfo), hStmt=58270504, fSqlType=0
Number of result columns (SQLNumResultCols), hStmt=58270504
value=19
Get connection info string (SQLGetInfo), hDbc=58267024, fInfoType=10, len=300
03.52.0000
Fetching (SQLFetch), hStmt=58270504
Column attributes (SQLColAttributes), hStmt=58270504, icol=1, type=2
value (int)=12
Column attributes (SQLColAttributes), hStmt=58270504, icol=1, type=3
value (int)=128
Get string data (SQLGetData), hStmt=58270504, column=1, maxLen=129
GUID
Get integer data (SQLGetData), hStmt=58270504, column=2
value=-11
Get integer data (SQLGetData), hStmt=58270504, column=3
value=36
Fetching (SQLFetch), hStmt=58270504
Get string data (SQLGetData), hStmt=58270504, column=1, maxLen=129
BIT
Get integer data (SQLGetData), hStmt=58270504, column=2
value=-7
Get integer data (SQLGetData), hStmt=58270504, column=3
value=1
Fetching (SQLFetch), hStmt=58270504
Get string data (SQLGetData), hStmt=58270504, column=1, maxLen=129
BYTE
Get integer data (SQLGetData), hStmt=58270504, column=2
value=-6
Get integer data (SQLGetData), hStmt=58270504, column=3
value=3
Fetching (SQLFetch), hStmt=58270504
Get string data (SQLGetData), hStmt=58270504, column=1, maxLen=129
LONGBINARY
Get integer data (SQLGetData), hStmt=58270504, column=2
value=-4
Get integer data (SQLGetData), hStmt=58270504, column=3
value=1073741823
Fetching (SQLFetch), hStmt=58270504
Get string data (SQLGetData), hStmt=58270504, column=1, maxLen=129
VARBINARY
Get integer data (SQLGetData), hStmt=58270504, column=2
value=-3
Get integer data (SQLGetData), hStmt=58270504, column=3
value=255
Fetching (SQLFetch), hStmt=58270504
Get string data (SQLGetData), hStmt=58270504, column=1, maxLen=129
BINARY
Get integer data (SQLGetData), hStmt=58270504, column=2
value=-2
Get integer data (SQLGetData), hStmt=58270504, column=3
value=255
Fetching (SQLFetch), hStmt=58270504
Get string data (SQLGetData), hStmt=58270504, column=1, maxLen=129
LONGCHAR
Get integer data (SQLGetData), hStmt=58270504, column=2
value=-1
Get integer data (SQLGetData), hStmt=58270504, column=3
value=2147483647
Fetching (SQLFetch), hStmt=58270504
Get string data (SQLGetData), hStmt=58270504, column=1, maxLen=129
CHAR
Get integer data (SQLGetData), hStmt=58270504, column=2
value=1
Get integer data (SQLGetData), hStmt=58270504, column=3
value=255
Fetching (SQLFetch), hStmt=58270504
Get string data (SQLGetData), hStmt=58270504, column=1, maxLen=129
CURRENCY
Get integer data (SQLGetData), hStmt=58270504, column=2
value=2
Get integer data (SQLGetData), hStmt=58270504, column=3
value=19
Fetching (SQLFetch), hStmt=58270504
Get string data (SQLGetData), hStmt=58270504, column=1, maxLen=129
INTEGER
Get integer data (SQLGetData), hStmt=58270504, column=2
value=4
Get integer data (SQLGetData), hStmt=58270504, column=3
value=10
Fetching (SQLFetch), hStmt=58270504
Get string data (SQLGetData), hStmt=58270504, column=1, maxLen=129
COUNTER
Get integer data (SQLGetData), hStmt=58270504, column=2
value=4
Fetching (SQLFetch), hStmt=58270504
Get string data (SQLGetData), hStmt=58270504, column=1, maxLen=129
SMALLINT
Get integer data (SQLGetData), hStmt=58270504, column=2
value=5
Get integer data (SQLGetData), hStmt=58270504, column=3
value=5
Fetching (SQLFetch), hStmt=58270504
Get string data (SQLGetData), hStmt=58270504, column=1, maxLen=129
REAL
Get integer data (SQLGetData), hStmt=58270504, column=2
value=7
Get integer data (SQLGetData), hStmt=58270504, column=3
value=7
Fetching (SQLFetch), hStmt=58270504
Get string data (SQLGetData), hStmt=58270504, column=1, maxLen=129
DOUBLE
Get integer data (SQLGetData), hStmt=58270504, column=2
value=8
Get integer data (SQLGetData), hStmt=58270504, column=3
value=15
Fetching (SQLFetch), hStmt=58270504
Get string data (SQLGetData), hStmt=58270504, column=1, maxLen=129
DATETIME
Get integer data (SQLGetData), hStmt=58270504, column=2
value=11
Get integer data (SQLGetData), hStmt=58270504, column=3
value=19
Fetching (SQLFetch), hStmt=58270504
Get string data (SQLGetData), hStmt=58270504, column=1, maxLen=129
VARCHAR
Get integer data (SQLGetData), hStmt=58270504, column=2
value=12
Get integer data (SQLGetData), hStmt=58270504, column=3
value=255
Fetching (SQLFetch), hStmt=58270504
End of result set (SQL_NO_DATA)
*ResultSet.close
Free statement (SQLFreeStmt), hStmt=58270504, fOption=1
*ResultSet has been closed
Get connection info (SQLGetInfo), hDbc=58267024, fInfoType=44
int value=19
Get connection info (SQLGetInfo), hDbc=58267024, fInfoType=168
int value=1
Get connection info (SQLGetInfo), hDbc=58267024, fInfoType=151
int value=127
Get connection info (SQLGetInfo), hDbc=58267024, fInfoType=121
int value=0
Get connection info (SQLGetInfo), hDbc=58267024, fInfoType=120
int value=0
Get connection info (SQLGetInfo), hDbc=58267024, fInfoType=153
int value=2
getConnection returning driver[className=sun.jdbc.odbc.JdbcOdbcDriver,sun.jdbc.odbc.JdbcOdbcDriver@186db54]
Connection Successful
*Connection.prepareStatement (INSERT into PERSONAL values ('?','?','?','?','?','?','?','?','?'))
Allocating Statement Handle (SQLAllocStmt), hDbc=58267024
hStmt=58270504
Setting statement option (SQLSetStmtOption), hStmt=58270504, fOption=6, vParam=0
Setting statement option (SQLSetStmtOption), hStmt=58270504, fOption=7, vParam=1
Preparing (SQLPrepare), hStmt=58270504, szSqlStr=INSERT into PERSONAL values ('?','?','?','?','?','?','?','?','?')
Number of parameter markers (SQLNumParams), hStmt=58270504
value=0
Registering Statement sun.jdbc.odbc.JdbcOdbcPreparedStatement@b166b5

Ich hoffe, mir kann jemand sagen, was ich falsch mache...

Danke schonmal!

Grüße
Der (noch)Gast
 
G

Guest

Gast
Mach die ganzen Anführungszeichen weg
Code:
('?','?','?','?','?','?','?','?','?')
Der Treibär macht es schon für dich, wenn du die entsprechenden setWasAuchImmer Methoden aufrufst.
 
G

Guest

Gast
Hi,

vieen Dank. Das hat schonmal geholfen. Nur jetzt bekomme ich folgende Meldung:

PreparedStatement.executeUpdate
*PreparedStatement.execute
Free statement (SQLFreeStmt), hStmt=58270504, fOption=0
Executing (SQLExecute), hStmt=58270504
RETCODE = -1
ERROR - Generating SQLException...
SQLState(21S01) vendor code(-3520)

Kann es sein, dass das etwas damit zu tun hat, dass zwei Felder in der MDB-Datei als "Date" deklariert sind?
Wie muss ich das dann handhaben?
Oder ist das ein ganz anderes Problem?

Danke und Gruß
 

foobar

Top Contributor
Anonymous hat gesagt.:
Hi,

vieen Dank. Das hat schonmal geholfen. Nur jetzt bekomme ich folgende Meldung:

PreparedStatement.executeUpdate
*PreparedStatement.execute
Free statement (SQLFreeStmt), hStmt=58270504, fOption=0
Executing (SQLExecute), hStmt=58270504
RETCODE = -1
ERROR - Generating SQLException...
SQLState(21S01) vendor code(-3520)

Kann es sein, dass das etwas damit zu tun hat, dass zwei Felder in der MDB-Datei als "Date" deklariert sind?
Wie muss ich das dann handhaben?
Oder ist das ein ganz anderes Problem?
Danke und Gruß
Wenn das Feld in der DB vom Typ Date ist mußte im PreparedStatement auch setDate und nicht setString benutzen.
 

bronks

Top Contributor
foobar hat gesagt.:
... Wenn das Feld in der DB vom Typ Date ist mußte im PreparedStatement auch setDate und nicht setString benutzen.
Grundsätzlich korrekt, aber leider kann nichteinmal der ODBC-Treiber für den SQL Server 2005 ein setDate verarbeiten, deshalb nehme ich an, daß es der AccessTreiber erst recht nicht kann. Es kann sein, daß ich falsch liege, aber ich meine damit schon mal herumexperimentiert zu haben und dabei kam heraus, daß Access kein Prepare durchführen kann.
 

foobar

Top Contributor
bronks hat gesagt.:
foobar hat gesagt.:
... Wenn das Feld in der DB vom Typ Date ist mußte im PreparedStatement auch setDate und nicht setString benutzen.
Grundsätzlich korrekt, aber leider kann nichteinmal der ODBC-Treiber für den SQL Server 2005 ein setDate verarbeiten, deshalb nehme ich an, daß es der AccessTreiber erst recht nicht kann. Es kann sein, daß ich falsch liege, aber ich meine damit schon mal herumexperimentiert zu haben und dabei kam heraus, daß Access kein Prepare durchführen kann.

Hmm, komische Microsoftwelt. Dann würde ich zumindest versuchen, daß Date im setString korrekt zu formatieren.
 
G

Guest

Gast
Hi,

setDate habe ich noch nicht versucht (ups). Bei setString habe ich allerdings schon dafür gesorgt, dass das Datum im richtigen und erwarteten Format mitgegeben wird. Das hat jedoch nicht funktioniert...

Also wenn das jetzt mit setDate nicht funktioniert, kann ich das preparedStatement vergessen und muss das mit nem normalen Statement machen? Habe ich das richtig verstanden?

Grüße
 

foobar

Top Contributor
Anonymous hat gesagt.:
Hi,

setDate habe ich noch nicht versucht (ups). Bei setString habe ich allerdings schon dafür gesorgt, dass das Datum im richtigen und erwarteten Format mitgegeben wird. Das hat jedoch nicht funktioniert...

Also wenn das jetzt mit setDate nicht funktioniert, kann ich das preparedStatement vergessen und muss das mit nem normalen Statement machen? Habe ich das richtig verstanden?
Grüße
Ja, sieht so aus. Normalerweise muß setDate funktionieren, aber bei Access anscheinend nicht.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
A JDBC Prepared Statement Autoincrement Datenbankprogrammierung 3
N Update Prepared Statement Fehler bei Argumenten Datenbankprogrammierung 3
C PostgreSQL Prepared Statement Datenbankprogrammierung 7
N Prepared Statement mit unbekannter Anzahl von Where-Clauses Datenbankprogrammierung 30
L MySQL Prepared Statement batch langsamer als bulk insert? Datenbankprogrammierung 10
F Frage zu Prepared Statement Datenbankprogrammierung 2
D Problem: Prepared Statement (Insert) funktioniert nicht. Datenbankprogrammierung 3
W Prepared Statement und Verbindungsverlust Datenbankprogrammierung 4
W Prepared Statement mehrere Zeichenketten Datenbankprogrammierung 4
G Keine Aussicht mit Prepared Statement Datenbankprogrammierung 10
P Prepared Statement scheint nicht zu funktionieren Datenbankprogrammierung 14
N Prepared Statement Datenbankprogrammierung 8
T Prepared Statements und Sets Datenbankprogrammierung 5
L Wiederverwendung von Prepared Statements Datenbankprogrammierung 4
Landei Mehre Werte für einen Prepared-Statement_Parameter übergeben? Datenbankprogrammierung 3
N prepared Statements Datenbankprogrammierung 6
G Flexible Prepared Statements Datenbankprogrammierung 2
F Update mit Prepared Statements Datenbankprogrammierung 10
T SQL-Statement Datenbank nach SQL Statement schließen? Datenbankprogrammierung 7
Kotelettklopfer SQLite Verhindern von doppelter Statement Ausführung Datenbankprogrammierung 25
L SQL-Statement SQL Statement doppelte Einträge finden Datenbankprogrammierung 9
C MySQL SQL Statement wir nicht ausgeführt Datenbankprogrammierung 11
G Datenbank Statement Datenbankprogrammierung 22
Dimax Erstellen ResultSet und Statement Datenbankprogrammierung 30
B MySQL Umkreissuche - brauche Hilfe bei SQL Statement Datenbankprogrammierung 12
M CSV Import - Dynamisches SQL Statement Datenbankprogrammierung 15
D Wiederverwendung / Recycling / Queuing von Statement Objekten Datenbankprogrammierung 1
D SQL Statement gesucht... Datenbankprogrammierung 15
J JDBC SQL Statement mit Parameter Datenbankprogrammierung 7
F Dynamischen String in SQL Statement einbinden Datenbankprogrammierung 9
L SQL Statement mit Switch-Case funktioniert nicht Datenbankprogrammierung 6
U PostgreSQL SELECT Statement Datenbankprogrammierung 5
A Problem mit Create-Statement Datenbankprogrammierung 9
LadyMilka MySQL Syntaxfehler im Statement Datenbankprogrammierung 3
P SQL-Statement Bei meinem Statement ist ein Fehler? Datenbankprogrammierung 2
P sql statement alter table foreign key Datenbankprogrammierung 4
T sql Statement Datenbankprogrammierung 9
B JDBC MySQL Statement Datenbankprogrammierung 3
A Sql Statement - Alle Zahlen größer 9 Datenbankprogrammierung 3
F Sql Statement Datenbankprogrammierung 12
A SQL-Statement prüfen Datenbankprogrammierung 3
W Statement als Klassenvariable Datenbankprogrammierung 27
I Select-Statement optimieren Datenbankprogrammierung 14
D SQLite Statement nimmt keine Namen aus getter-Methoden Datenbankprogrammierung 11
alex_fairytail MySQL SQL Statement Delete zwischen Datum1 und Datum2 Datenbankprogrammierung 5
M Access Update Statement Fehler update -> unmöglich? Datenbankprogrammierung 3
R Derby/JavaDB LIKE Statement mit Wildcard Datenbankprogrammierung 20
R Select Statement als temporärer Table Datenbankprogrammierung 7
R Derby/JavaDB Select Statement Where bedingung will nicht ganz! Datenbankprogrammierung 4
R Derby/JavaDB Select TOP Statement geht nicht Datenbankprogrammierung 3
S Null Pointer exception statement Datenbankprogrammierung 8
R Derby/JavaDB Insert Statement Probleme Datenbankprogrammierung 14
K statement.execute liefert false Datenbankprogrammierung 6
S SQL Statement: executeUpdate Datenbankprogrammierung 15
F wie funktioniert if Statement in SELECT? Datenbankprogrammierung 2
T MySQL PreparedStatement mit INSERTs langsam, Batch-Statement auch Datenbankprogrammierung 4
M MySQL größere von zwei Zahlen in Update Statement Datenbankprogrammierung 2
J [Hibernate] Select Statement Datenbankprogrammierung 4
S HSQLDB DELETE-Statement funktioniert nicht Datenbankprogrammierung 4
L MySQL Kann Statement nicht erzeugen Datenbankprogrammierung 5
T Komme mit dem SQL Statement nicht weiter Datenbankprogrammierung 5
D MySQL Client - Server: Client verabschiedet sich sobald ich Variablen im SQL Statement verwende Datenbankprogrammierung 9
T java.sql.SQLException: unexpected end of statement Datenbankprogrammierung 2
J SQL-Statement Datenbankprogrammierung 10
U MSSQL Verbindung steht, aber meckert beim Statement Datenbankprogrammierung 2
S executeBatch result immet mit Statement.SUCCESS_NO_INFO Datenbankprogrammierung 4
G Frage zum Insert-Statement Datenbankprogrammierung 2
J JDBC- Statement Ausführung nicht persistent Datenbankprogrammierung 2
A Connection Variable in anderer Klasse verwenden -> statement Datenbankprogrammierung 2
Z DELETE-Statement Datenbankprogrammierung 6
G INSERT-STATEMENT Datenbankprogrammierung 6
alexpetri hsql statement problem Datenbankprogrammierung 3
W invalid sql statement ? Datenbankprogrammierung 3
S Probleme mit statement.close() Datenbankprogrammierung 10
G Wie ein SQL-Statement zusammensetzen? Datenbankprogrammierung 5
T Select Statement auf Relation Datenbankprogrammierung 3
S Connection/Statement/ResultSet auf einmal geschlossen Datenbankprogrammierung 8
G MsSQL | Statement.execute(String s) Datenbankprogrammierung 3
G Für jede SQL-Abfrage eigenes Statement und ResultSet? Datenbankprogrammierung 3
C Statement/Connection SQLWarning Datenbankprogrammierung 4
J sql-statement Datenbankprogrammierung 7
G Update Statement automatisch unterteilen lassen Datenbankprogrammierung 3
T SQL-Statement parser? Datenbankprogrammierung 11
G Problem mit Suchen Statement Java und MS-SQL-Server Datenbankprogrammierung 9
J SELECT-Statement Datenbankprogrammierung 4
S Statement.getGeneratedKeys() funktioniert nicht Datenbankprogrammierung 4
G Problem mit Delete-Statement Datenbankprogrammierung 3
L mehrere Abfragen mit einem Statement!? Datenbankprogrammierung 5
E Problem mit create-Statement Datenbankprogrammierung 5
E SQL-Statement um eine Nummer in der Datenbank zu suchen Datenbankprogrammierung 3
U MySQL Aus Servlet in Datenbank schreiben Datenbankprogrammierung 4
H In hibernate.cfg.xml schreiben und auslesen Datenbankprogrammierung 0
F MySQL Wie kann ich in Java Datensätze aus einer MySQL Datenbank gezielt in einzelne Arrays schreiben? Datenbankprogrammierung 9
M MySQL wie Listen oder arras in Tabelle(n) schreiben Datenbankprogrammierung 10
M In MySql Datenbank schreiben Datenbankprogrammierung 6
O mit Multi-Thread Daten aus Datenbank lesen und schreiben Datenbankprogrammierung 22
M Derby/JavaDB einen Null-Wert in die Datenbank schreiben Datenbankprogrammierung 7
P MySQL jpmdbc: Kann lesen aber nicht schreiben? Datenbankprogrammierung 3
T 3 GB Große CSV Datei einlesen und in SQL-DB schreiben Datenbankprogrammierung 12
E Daten einer SQL-Datenbank aus Combobox in labels schreiben Datenbankprogrammierung 6

Ähnliche Java Themen

Neue Themen


Oben