Datenbankabfrage mit UPDATE

  • Themenstarter Themenstarter Marcel80
  • Beginndatum Beginndatum
Status
Nicht offen für weitere Antworten.
M

Marcel80

Gast
Hallo Ihr, ich hab mal wieder ein Problem, das ich irgendwie nicht in den Griff bekomme. Ich möchte einen Datenbankabfrage mit UPDATE starten. Es soll die entprechende Nummer eingegeben werden und anschließend die Werte geändert werden können. Ich bin mir absolut nicht sicher, ob mein SQL-Befehl stimmt. Beim Ausführen kommt die Fehlermeldung:
java.sql.SQLException: [Microsoft][ODBC Microsoft Access Driver] Datentypen in Kriterienausdruck unverträglich.
Vielleicht kann mir jemand helfen, vielen Dank!

Code:
import java.sql.*;
import java.sql.PreparedStatement;

public class DB_Update
{
   public void updateEingabe(String nu, String an, String ad, String fi)
  {
    try {
      Class.forName( "sun.jdbc.odbc.JdbcOdbcDriver" );
    }
    catch ( ClassNotFoundException e ) {
      System.out.println( "Fehler bei ODBC-JDBC-Bridge" + e );
      
      return;
    }
            
    try
    {
        Connection conn;
        PreparedStatement stmt; 
     
        stmt = null;
        int rSet;
        String url = "jdbc:odbc:Kunden_SS06";
        conn = DriverManager.getConnection(url); //Treiber laden + Connection
        
        String updateString = "UPDATE Kunden SET Firmenname = '"+ fi + "', Firmenadresse = '" + ad + "', Ansprechpartner = '" + an + "' WHERE Nummer = " + nu;
       stmt = conn.prepareStatement(updateString); 
        
       stmt.setString(1, nu);
       stmt.setString(1, fi); 
       stmt.setString(2, ad); 
       stmt.setString(3, an); 
       stmt.setString(4, nu);    
       stmt.executeUpdate(); 
      //  if (rows == 1) { 
        // eine Zeile eingefügt, genau wie geplant 
        System.out.println("Passt!"); 
       

        stmt.close();
        conn.close();
    }
    catch ( SQLException e )
    {
      System.out.println( "Fehler bei Tabellenabfrage   " + e);
        }
    }
  }
 
Ich bin auch noch nicht firm in SQL. Aber gib doch einfach mal
den fertigen SQL-String aus und, wenn dir das nicht weiterhilf, poste
diesen String hier.
 
Wenn du ein PreparedStatement verwendest musst du "?" als Platzhalter verwenden:

Code:
String updateString = "UPDATE Kunden SET Firmenname = ?, Firmenadresse = ?, Ansprechpartner = ? WHERE Nummer = ?";

stmt = conn.prepareStatement(updateString);
stmt.setString(1, fi);
stmt.setString(2, ad);
stmt.setString(3, an);
stmt.setInt(4, Integer.parseInt(nu));   
stmt.executeUpdate();
 
Stimmt ja, er nutzt ein preparedStatement, :shock:
Glatt übersehen 😳

Code:
 String updateString = 
    "UPDATE Kunden "+
    "SET Firmenname = ?, Firmenadresse = ?, Ansprechpartner = ? "+
    "WHERE Nummer = ?";
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben