Articles of prepared statement

syntax corretta da usare vicino a “?”

Ho un codice Java: String searchPerson = “select * from persons where surname like ? and name like ?”; //connect to DB PreparedStatement statement = connect.prepareStatement(searchPerson); statement.setString(1,”%”+ surname + “%”); statement.setString(2, “%” + name + “%”); ResultSet resultPerson = statement.executeQuery(searchPerson); //..code Allora ho SQLException: hai un errore nella syntax SQL; controlla il manuale che corrisponde […]

C’è un modo per recuperare l’ID autoincrement da una dichiarazione preparata

C’è un modo per recuperare la chiave generata automaticamente da una query DB quando si utilizza una query java con istruzioni preparate. Ad esempio, so che AutoGeneratedKeys può funzionare come segue. stmt = conn.createStatement(); stmt.executeUpdate(sql, Statement.RETURN_GENERATED_KEYS); if(returnLastInsertId) { ResultSet rs = stmt.getGeneratedKeys(); rs.next(); auto_id = rs.getInt(1); } Però. Cosa succede se voglio fare un inserto […]

Come utilizzare una variabile tablename per una istruzione preparata java inserire

Sto usando un object java PreparedStatment per build una serie di query INSERT in batch. L’istruzione della query è del formato … String strQuery = “INSERT INTO ? (col1, col2, col3, col4, col5) VALUES (?,?,?,?,?,?);”; … quindi entrambi i valori di campo e il tablename sono variabili (ad esempio, ho più tabelle con lo stesso […]

Utilizzo del carattere jolly “simile” nella dichiarazione preparata

Sto usando istruzioni preparate per eseguire query di database mysql. E voglio implementare una funzionalità di ricerca basata su una parola chiave di sorta. Per questo ho bisogno di usare la parola chiave LIKE , tanto lo so. Inoltre, ho già utilizzato le istruzioni preparate in precedenza, ma non so come utilizzarlo con LIKE perché […]

Richiedi query da java.sql.PreparedStatement

Nel mio codice sto usando java.sql.PreparedStatement . setString() quindi il setString() per popolare i caratteri jolly dell’istruzione preparata. C’è un modo per me di recuperare (e stampare) la query finale prima che venga chiamato il metodo executeQuery() e viene eseguita la query? Voglio solo questo per scopi di debug.

Riutilizzare una PreparedStatement più volte

nel caso in cui si utilizzi PreparedStatement con una singola connessione comune senza pool, è ansible ricreare un’istanza per ogni operazione dml / sql mantenendo il potere delle istruzioni preparate? Intendo: for (int i=0; i<1000; i++) { PreparedStatement preparedStatement = connection.prepareStatement(sql); preparedStatement.setObject(1, someValue); preparedStatement.executeQuery(); preparedStatement.close(); } invece di: PreparedStatement preparedStatement = connection.prepareStatement(sql); for (int i=0; […]

Come posso ottenere l’SQL di un PreparedStatement?

Ho un metodo Java generale con la seguente firma del metodo: private static ResultSet runSQLResultSet(String sql, Object… queryParams) Apre una connessione, crea un PreparedStatement utilizzando l’istruzione sql ei parametri queryParams lunghezza variabile queryParams , lo esegue, memorizza nella cache il ResultSet (in un CachedRowSetImpl ), chiude la connessione e restituisce il set di risultati memorizzato […]

Utilizzare le istruzioni preparate per impostare il nome della tabella

Sto cercando di utilizzare le istruzioni preparate per impostare un nome di tabella per selezionare i dati, ma continuo a ricevere un errore quando eseguo la query. L’errore e il codice di esempio sono visualizzati di seguito. [Microsoft][ODBC Microsoft Access Driver] Parameter ‘Pa_RaM000’ specified where a table name is required. private String query1 = “SELECT […]

Nomi di colonne variabili usando istruzioni preparate

Mi stavo chiedendo se ci fosse comunque da specificare i nomi delle colonne restituiti usando le istruzioni preparate. Sto usando MySQL e Java. Quando ci provo: String columnNames=”d,e,f”; //Actually from the user… String name = “some_table”; //From user… String query = “SELECT a,b,c,? FROM ” + name + ” WHERE d=?”;//… stmt = conn.prepareStatement(query); stmt.setString(1, […]

In che modo un PreparedStatement evita o impedisce l’iniezione SQL?

So che PreparedStatements evita / previene SQL Injection. Come lo fa? La query del modulo finale costruita utilizzando PreparedStatements sarà una stringa o altrimenti?