Problem mit Datenbankzugriff über JDBC



  • Ich versuche gerade mittels JDBC (Treiberversion 3.0.9) ein Blob-Objekt in die Datenbank (MySQL 4.0.16) einzufügen. Allerdings funktioniert das Einfügen nicht. Im Code kann ich eigentlich keinen Fehler finden:

    try
    		{
    			Connection con = getConnection ();
    
    			// test insert
    			String sqlIns = "INSERT INTO DBTest (data) VALUES (?)";
    			PreparedStatement stmt = con.prepareStatement(sqlIns);
    			byte[] pbdata = new byte [100];
    			InputStream is = new ByteArrayInputStream (pbdata);
    			stmt.setBinaryStream(1, is, is.available());
    
    			System.out.println (sqlIns);
    			int anz = 1;stmt.execute (sqlIns);
    			stmt.close();
    
    			if (anz != 1)
    				System.out.println ("Fehler beim Einfügen!");
    		}
    		catch (IOException ioex)
    		{
    			System.out.println ("IOException: " + ioex);
    		}
    		catch  (SQLException sqlex)
    		{
    			System.out.println (sqlex);
    			System.out.println ("Errorcode: " + sqlex.getErrorCode());
    		}
    

    Beim Ausführen erhalte ich jedesmal die folgende Aussage:

    Syntax error or access violation,  message from server: "You have an error in your SQL syntax. 
    Check the manual that corresponds to your MySQL server version for the right syntax to use near '?)' at line 1"
    

    Falls jemand Hilfe weiß,

    Vielen Dank



  • Hi,

    soll das Fragezeichen da so stehen oder ist das nur ein Platzhalter. Wenn nicht, dann ist die SQL-Anweisung falsch. Das Fragezeichen im Values darf da so nicht stehen. Steht auch in der Fehlermeldung.

    Gruss

    Oliver :xmas1:



  • So wie ich das ganze verstanden habe, steht das Fragezeichen als Platzhalter für einen speziellen Wert. Der Wert sollte dann mit dem Aufruf setBinaryStream () gesetzt werden. Warum das allerdings nicht funktioniert ist mir unverständlich.



  • Das Problem hat sich erledigt, man darf natürlich bei execute () nicht ein zweites Mal das SQL-Statement angeben.


Anmelden zum Antworten