Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    Problema con query

    salve, vorrei fare una ricerca in un database utilizzando l'ID, e inserisco il valore dell'id da ricercare in un JTextField
    codice:
    ins = new JTextField(5);
    premuto il bottone invio passso il valore ad una query
    codice:
    rslt=stmt.executeQuery("SELECT * FROM Anagrafica WHERE IDprogressivo = '" + ins.getText() +"'");
    il problema è che come errore mi da " tipi di dati non corrispondenti nell'espressione criterio "
    essendo l'id un contatore ho provato a trasformare il tutto in un integer
    codice:
     final String d = (String)ins.getText();
    int in = Integer.parseInt(d);
    e passare alla query in, ma continua a darmi lo stesso errore, potete aiutarmi.

    saluti Roberto

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: Problema con query

    Originariamente inviato da RobertoBel
    passso il valore ad una query
    codice:
    rslt=stmt.executeQuery("SELECT * FROM Anagrafica WHERE IDprogressivo = '" + ins.getText() +"'");
    il problema è che come errore mi da " tipi di dati non corrispondenti nell'espressione criterio "
    Se è un ID progressivo, è sicuramente un campo numerico. Quindi nella query non devi certo "quotarlo" con degli apici!!

    Se nel campo scrivi 123, la stringa di query, una volta composta, dovrebbe diventare semplicemente: "SELECT * FROM Anagrafica WHERE IDprogressivo = 123"

    Sarebbe anche buona cosa verificare e assicurarsi che il contenuto del campo sia solo "numerico". Pensa ... che succederebbe se componessi, senza fare prima alcun controllo, "..... WHERE IDprogressivo = 1a2"??
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    Ti conviene usare PreparedStatement, così non hai il problema degli apicetti

    La tua query diverrebbe
    codice:
    PrepareStatement ps = connection.prepareStatement("SELECT * FROM Anagrafica WHERE IDprogressivo = ?");
    ps.setInt(1, Integer.parseInt(ins.getText()));
    rslt = ps.executeQuery();
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  4. #4

    Query con errore "Tipi di dati non corrispondenti"

    Grazie avete ragione entrambi, ho optato lavia di trasformare in Interger il dato in input e poi passarlo alla query, posto il codice per i posteri
    codice:
    ins = new JTextField(5);
    
    // qui ci sarà il bottone invia e tutto quello che deriva
    
    final String d = (String)ins.getText();
    int in = Integer.parseInt(d);
    
    rslt=stmt.executeQuery("SELECT * FROM Anagrafica WHERE IDprogressivo = " + in );

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.