Access Update Statement Fehler update -> unmöglich?

MrTobi

Mitglied
Hallo,
so langsam verzweifle ich. Ich will ein Update auf eine Access Datenbank ausführen, so langsam glaube ich, das etwas irgendwo zwischen meinem Programm und der Datenbank nicht stimmt. Weil wenn ich das Statement so 1:1 in Access ausführe läuft das. Ich bekomm immer IMMMER den Parameterfehler. Die Zeile über dem Fehler ist die welche mir das System.out.println() ausgibt.
Wie gesagt wenn ich das in Access ausführe -> wunderbar macht er ohne zu meckern. Die Select's funktionieren auch ohne Probleme. Weiß irgendjemand woran das liegt?
Ich glaub langsam das irgendwas mit JDBC:ODBC nicht stimmt und er was falsch umwandelt 🙁 .

Und kommt mir jetzt nicht mit Prepared Statements da bekomm ich gleich 3 Parameterfehler. 😀

Ich habe auch schon versucht die Tabellenfelder mit "[]" zu umklammern -> Selber Fehler. Printout:
update tbl_Laser SET [isAlive] = 'true' WHERE [Programmname] ='6AV35031DB10';


update tbl_Laser SET isAlive = 'true' WHERE Programmname ='6AV35031DB10';
java.sql.SQLException: [Microsoft][ODBC Microsoft Access Driver] 1 Parameter wurden erwartet, aber es wurden zu wenig Parameter übergeben.
at sun.jdbc.odbc.JdbcOdbc.createSQLException(Unknown Source)
at sun.jdbc.odbc.JdbcOdbc.standardError(Unknown Source)
at sun.jdbc.odbc.JdbcOdbc.SQLExecDirect(Unknown Source)
at sun.jdbc.odbc.JdbcOdbcStatement.execute(Unknown Source)
at sun.jdbc.odbc.JdbcOdbcStatement.executeUpdate(Unknown Source)
at DataBaseLaser.updateisAlive(DataBaseLaser.java:105)
at Main.main(Main.java:35)

Folgender simpler Code:

Java:
public void updateisAlive(DataHolder currentHolder) throws SQLException{
		Statement st = myConn.createStatement(); 
		String updateSql = "update tbl_Laser " +
				"SET isAlive = 'true' " +
				"WHERE Programmname ='"+currentHolder.getsMatnr()+"';";

		System.out.println(updateSql);
		int updateSuccess = st.executeUpdate(updateSql);
	}


Weitere Code fals ihr den braucht:

Java:
private DataBaseLaser() {

		try {
			Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
		} catch (ClassNotFoundException e) {

			e.printStackTrace();
		}

		String sUsr = "";
		String sPw = "";
		String sDbUrl = "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ="
				+ idDatabasepath + ";READONLY=false}";

		try {
			myConn = DriverManager.getConnection(sDbUrl, sUsr, sPw);
			connAbfragen=false;
			// System.out.println("Verbindung hergestellt: " + myConn);
		} catch (SQLException e) {
			e.printStackTrace();
			connAbfragen = true;
		}

	}
 
Also das mit dem true bzw True ist in dem Fall irelevant.
Das Feld "isAlive" ist ein Textfeld. Daher schreibe ich nur den String 'true' rein , logischerweise könnte ich ja auch 'blabla' reinschreiben geht aber auch nicht 🙂
Ich hab auch in der Datenbank und im Code das Feld umbenannt -> Selber Fehler.
Wie gesagt die komplexesten Select's mit übertrieben ausgedrückt 30 Joins funktionieren. Aber ich habe es noch nie geschafft auf eine Access Datenbank per JDBC:ODBC ein Update auszuführen ist das überhaupt möglich?

Ich weiß echt nimmer weiter das kann doch nicht wahr sein das man kein Update ausführen kann?! :bahnhof:

Es handelt sich um Access 2003 falls das irgendwie relevant ist.

Grüße
MrTobi
 
gehts ohne Semikolon? 😉
ne ich weiß eigentlich nichts mehr,
wenn keine Tutorials aus dem Internet laufen oder gar nicht erst zu finden sind..
 

Zurück
Oben