Ciao a tutti, come da titolo, devo mandare in esecuzione una Query che già si trova dentro il Database, qualcuno sa come si fa? e se si può fare?? grazie!!!!
Ciao a tutti, come da titolo, devo mandare in esecuzione una Query che già si trova dentro il Database, qualcuno sa come si fa? e se si può fare?? grazie!!!!
Ho un database Access, questo database non l'ho creato io mi è stato dato per accedere ai dati che ci sono dentro.
Oltre ai vari dati ci sono anche delle maschere e delle query.
Io ho bisogno di eseguire una di queste query già interne al database da Java.
Per intenderci non devo fare questo:
Ma devo fare questo:codice:String sql = new String("SELECT Tipologia FROM piantaCabine WHERE Cabina=? AND Settore=?"); PreparedStatement cmd = con.prepareStatement(sql); cmd.setString(1, numeroCabina); cmd.setString(2, settore); rs = cmd.executeQuery();
Spero di essere stato più chiaro adesso!!codice:String sql = new String("SELECT queryDaEseguire"); PreparedStatement cmd = con.prepareStatement(sql); rs = cmd.executeQuery();![]()
ok, non conosco bene access.
ma se funziona come gli altri db, e ci ho visto bene, magari devi fare una cosa del genere:
codice:CALL queryDaEseguire
Grazie, purtroppo non funziona mi hai dato uno spunto e ho trovato una classe del JDBC che si chiama CallableStatement e forse è questa che fa al caso mio.
Ci studio un poco e se riesco vi aggiorno!
Grazie ancora!!!
Premetto che non l'ho provato (ho smesso di usare Access nel 99% dei casi), ma usando la libreria UCanAccess (tra l'altro è stata scritta da un Italiano) le query di selezione di Access (non parametriche) vengono mappate automaticamente come delle normali viste, quindi le dovresti poter usare come fossero tabelle.
Esempio:
Supponendo di avere dentro ad Access una query di selezione chiamata "Q_Pippo":
codice:PreparedStatement pstmt = null; ResultSet rs = null; try { pstmt = con.prepareStatement("SELECT * FROM Q_Pippo"); rs = pstmt.executeQuery(); if (rs != null) { while( rs.next() ) { ... } } } catch (Exception e) { e.printStackTrace(); } finally { if (rs != null) { try { rs.close(); } catch (Exception e) { } } if (pstmt != null) { try { pstmt.close(); } catch (Exceptin e) { } } }
Ciao.![]()
"Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza
Allora, diciamo che ho risolto così:
Solo che adesso ho un altro problema.codice:CallableStatement callableStatement = con.prepareCall("{call qryListForSelector}"); rs = callableStatement.executeQuery();
L'esecuzione della query mi dice:
net.ucanaccess.jdbc.FeatureNotSupportedException
Cercando su internet ho visto che UCanAccess non può eseguire query parametriche.
Ma in questa query non vi sono parametri.
Vi posto il codice della query:
Mi sapreste dire cosa c'è adesso che non va????codice:SELECT * FROM [select * from qryRiconfermate UNION select * from qryOpenFiltered]. AS Lista ORDER BY Lista.Settore DESC , Int([Numero]);
Grazie sempre!!!
Ciao Lele prima provavo a eseguire le query come normali tabelle ma mi dava sempre errore, non mi riconosceva il nome della Query
I computer sono incredibilmente veloci, accurati e stupidi.
Gli uomini sono incredibilmente lenti, inaccurati e intelligenti.
Insieme sono una potenza che supera l'immaginazione.
A.Einstein
Stando a quello che dice(va) l'autore di UCanAccess nel 2014
It cannot execute ms-access parametric queries that could only be mapped into Callable Statements.
In other words, you have currently to code in java an equivalent procedure (using Prepared Statements).
The support for Callable Statements, where possile, will be added in the next versions and I think I'll put some more effort for this.
Quindi:
UCanAccess maps select queries defined in MS Access into views when they are convertible into (so when they are SELECT queries without parameters).
UCanAccess mappa le query di selezione memorizzate in Access in viste (usabili, quindi, come fossero normali tabelle) solo quando queste sono query di selezione senza parametri.
Nel caso di query parametriche (salvate dentro Access) non mi è chiaro se si possano invocare usando le CallableStatements (non ho mai provato e non ho tempo di metter su un DB Access per provare). Di sicuro, dice l'autore, le puoi rimodellare usando le normalissime PreparedStatements di Java (ovvio).
Ciao.![]()
"Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza