2014-06-09 15 views
6

Ho creato correttamente un'origine dati ColdFusion in un database SQLite utilizzando sqlitejdbc-v056.jar. Poi ho aggiunto questa domanda alla mia pagina .cfmnon implementato dal driver JDBC di SQLite

<cfquery name="qry" datasource="Spiceworks"> 
SELECT 
id AS Ticket_Number, 
summary AS Summary, 
status AS Status, 
created_at AS Created_At, 
assigned_to AS Assigned_to 

FROM tickets 
WHERE status = 'open' AND assigned_to IS NULL 
ORDER BY Created_At DESC 
</cfquery> 

Quando si naviga alla mia pagina .cfm in IE e Firefox, ottengo l'errore:

not implemented by SQLite JDBC driver

The error occurred in C:/Inetpub/wwwroot/intra/SmartTV/UnassignedTickets/Tickets.cfm: line 204

202 :
203 :
204 :
205 : SELECT
206 : id,

SQL SELECT id, summary, status, created_at, assigned_to FROM tickets WHERE status = 'open' AND assigned_to IS NULL ORDER BY created_at DESC DATASOURCE Spiceworks Resources:

Check the ColdFusion documentation to verify that you are using the correct syntax. 
Search the Knowledge Base to find a solution to your problem. 

Stack Trace

at cfTickets2ecfm1617356019.runPage(C:/Inetpub/wwwroot/intra/SmartTV/UnassignedTickets/Tickets.cfm:204) at cfTickets2ecfm1617356019.runPage(C:/Inetpub/wwwroot/intra/SmartTV/UnassignedTickets/Tickets.cfm:204) java.sql.SQLException: not implemented by SQLite JDBC driver 
    at org.sqlite.jdbc3.JDBC3Statement.unused(JDBC3Statement.java:397) 
    at org.sqlite.jdbc3.JDBC3Statement.execute(JDBC3Statement.java:414) 
    at coldfusion.server.j2ee.sql.JRunStatement.execute(JRunStatement.java:359) 
    at coldfusion.sql.Executive.executeQuery(Executive.java:1442) 
    at coldfusion.sql.Executive.executeQuery(Executive.java:1201) 
    at coldfusion.sql.Executive.executeQuery(Executive.java:1131) 
    at coldfusion.sql.SqlImpl.execute(SqlImpl.java:406) 
    at coldfusion.tagext.sql.QueryTag.executeQuery(QueryTag.java:1056) 
    at coldfusion.tagext.sql.QueryTag.doEndTag(QueryTag.java:685) 
    at cfTickets2ecfm1617356019.runPage(C:\Inetpub\wwwroot\intra\SmartTV\UnassignedTickets\Tickets.cfm:204) 
    at coldfusion.runtime.CfJspPage.invoke(CfJspPage.java:244) 
    at coldfusion.tagext.lang.IncludeTag.doStartTag(IncludeTag.java:444) 
    at coldfusion.filter.CfincludeFilter.invoke(CfincludeFilter.java:65) 
    at coldfusion.filter.IpFilter.invoke(IpFilter.java:64) 
    at coldfusion.filter.ApplicationFilter.invoke(ApplicationFilter.java:428) 
    at coldfusion.filter.RequestMonitorFilter.invoke(RequestMonitorFilter.java:48) 
    at coldfusion.filter.MonitoringFilter.invoke(MonitoringFilter.java:40) 
    at coldfusion.filter.PathFilter.invoke(PathFilter.java:112) 
    at coldfusion.filter.ExceptionFilter.invoke(ExceptionFilter.java:94) 
    at coldfusion.filter.ClientScopePersistenceFilter.invoke(ClientScopePersistenceFilter.java:28) 
    at coldfusion.filter.BrowserFilter.invoke(BrowserFilter.java:38) 
    at coldfusion.filter.NoCacheFilter.invoke(NoCacheFilter.java:46) 
    at coldfusion.filter.GlobalsFilter.invoke(GlobalsFilter.java:38) 
    at coldfusion.filter.DatasourceFilter.invoke(DatasourceFilter.java:22) 
    at coldfusion.filter.CachingFilter.invoke(CachingFilter.java:62) 
    at coldfusion.CfmServlet.service(CfmServlet.java:219) 
    at coldfusion.bootstrap.BootstrapServlet.service(BootstrapServlet.java:89) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) 
    at coldfusion.monitor.event.MonitoringServletFilter.doFilter(MonitoringServletFilter.java:42) 
    at coldfusion.bootstrap.BootstrapFilter.doFilter(BootstrapFilter.java:46)java.sql.SQLException: not implemented by SQLite JDBC driver 
    at org.sqlite.jdbc3.JDBC3Statement.unused(JDBC3Statement.java:397) 
    at org.sqlite.jdbc3.JDBC3Statement.execute(JDBC3Statement.java:414) 
    at coldfusion.server.j2ee.sql.JRunStatement.execute(JRunStatement.java:359) 
    at coldfusion.sql.Executive.executeQuery(Executive.java:1442) 
    at coldfusion.sql.Executive.executeQuery(Executive.java:1201) 
    at coldfusion.sql.Executive.executeQuery(Executive.java:1131) 
    at coldfusion.sql.SqlImpl.execute(SqlImpl.java:406) 
    at coldfusion.tagext.sql.QueryTag.executeQuery(QueryTag.java:1056) 
    at coldfusion.tagext.sql.QueryTag.doEndTag(QueryTag.java:685) 
    at cfTickets2ecfm1617356019.runPage(C:\Inetpub\wwwroot\intra\SmartTV\UnassignedTickets\Tickets.cfm:204) 
    at coldfusion.runtime.CfJspPage.invoke(CfJspPage.java:244) 
    at coldfusion.tagext.lang.IncludeTag.doStartTag(IncludeTag.java:444) 
    at coldfusion.filter.CfincludeFilter.invoke(CfincludeFilter.java:65) 
    at coldfusion.filter.IpFilter.invoke(IpFilter.java:64) 
    at coldfusion.filter.ApplicationFilter.invoke(ApplicationFilter.java:428) 
    at coldfusion.filter.RequestMonitorFilter.invoke(RequestMonitorFilter.java:48) 
    at coldfusion.filter.MonitoringFilter.invoke(MonitoringFilter.java:40) 
    at coldfusion.filter.PathFilter.invoke(PathFilter.java:112) 
    at coldfusion.filter.ExceptionFilter.invoke(ExceptionFilter.java:94) 
    at coldfusion.filter.ClientScopePersistenceFilter.invoke(ClientScopePersistenceFilter.java:28) 
    at coldfusion.filter.BrowserFilter.invoke(BrowserFilter.java:38) 
    at coldfusion.filter.NoCacheFilter.invoke(NoCacheFilter.java:46) 
    at coldfusion.filter.GlobalsFilter.invoke(GlobalsFilter.java:38) 
    at coldfusion.filter.DatasourceFilter.invoke(DatasourceFilter.java:22) 
    at coldfusion.filter.CachingFilter.invoke(CachingFilter.java:62) 
    at coldfusion.CfmServlet.service(CfmServlet.java:219) 
    at coldfusion.bootstrap.BootstrapServlet.service(BootstrapServlet.java:89) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) 
    at coldfusion.monitor.event.MonitoringServletFilter.doFilter(MonitoringServletFilter.java:42) 
    at coldfusion.bootstrap.BootstrapFilter.doFilter(BootstrapFilter.java:46) 

Aggiornamento:

Ho il mio file .jar sotto C:\ColdFusion10\cfusion\lib\ e C:\ColdFusion10\cfusion\wwwroot\WEB-INF\lib. In ColdFusion Datasources:

  • CF Data Source Name: Spiceworks
  • JDBC URL: JDBC: sqlite: \ Spiceworks \ C $ \ Programmi \ Spiceworks \ db \ spiceworks_prod.db
  • driver Classe: org. sqlite.JDBC
  • nome del driver: sqlite-JDBC-3.7.15-M1.jar
  • nome utente: <user>
  • password: <password>

Come suggerito nei commenti, ho provato le dichiarazioni più semplici:

  • SELECT * FROM tickets
  • SELECT id, summary, status, assigned_to FROM tickets

... e different driver versions

  • SqlLite-jdbc4-3.8.2- SNAPSHOT.jar
  • sqlite-jdbc-3.7.15-M1.j ar

ma ha ancora lo stesso errore.

+0

Facciamo [continua questa discussione in chat] (http://chat.stackoverflow.com/rooms/55344/discussion-between-leigh-and-wenda). – Leigh

risposta

3

Penso che l'errore originale significhi esattamente quello che dice. L'origine dati ha richiamato un metodo che non è implementato dal driver che si sta utilizzando. In particolare il metodo execute(..) di org.sqlite.jdbc3.JDBC3Statement. The source for this driver mostra che il metodo non fa nulla. Semplicemente getta il messaggio di errore che stai vedendo.

Tuttavia penso che tu abbia un'altra versione del jar del driver SQLite nel percorso della classe. Lo sqlitejdbc-v056.jar pubblicato non può causare quell'errore perché non contiene nemmeno una classe JDBC3Statement. Quello che probabilmente sta accadendo è che CF sta caricando un'altra versione del driver (che si trova nel percorso della classe).

Nei miei test, sqlitejdbc-v056.jar ha funzionato bene con CF10. Prima di aggiungere nuovamente il jar, assicurati di aver rimosso tutte le versioni del jar SQLLite dal percorso della classe CF e riavvia CF. In caso contrario, CF li caricherà automaticamente e continuerai a ricevere questo messaggio di errore.

Per assicurarsi di aver rimosso tutti i dei vasi, dopo il riavvio, provare e creare un'istanza della classe principale. Se la riga sottostante genera un errore "Classe non trovata", sai che li hai rimossi tutti. Una volta che hai fatto, andare avanti e reinstallare il sqlitejdbc-v056.jar.

<cfset obj = createObject("java", "org.sqlite.JDBC")> 
If you see this text, you still have a version of the jar in your class path. 

Ecco cosa ha funzionato per me:

  1. Creato database vuoto C:/temp/sqlite/products.db
  2. scaricati sqlitejdbc-v056.jar in C:\ColdFusion10\cfusion\wwwroot\WEB-INF\lib
  3. Restarted CF
  4. Creato "Altro" DSN
  5. Impostazioni DSN
    • DS Nome: SQLite
    • JDBC URL: JDBC: sqlite: C: /temp/sqlite/products.db
    • driver Classe: org.sqlite.JDBC
+0

Non capisco cosa intenda il mio percorso di classe. Per favore spiega meglio. Come uso l'oggetto? Non utilizzo cfquery? Dove hai scaricato il file sqlitejdbc-v056.jar, quindi so di avere la stessa versione. – wenda

+0

Il [percorso classe CF] (http://stackoverflow.com/questions/12304479/coldfusion-about-using-custom-own-written-java-classes/12304757#12304757), ovvero le località CF cercano classi e barattoli . Userete ancora cfquery. Lo scopo dell'istruzione 'createObject' è solo quello di verificare che siano stati rimossi tutti i jar del driver dal percorso della classe. Se lo hai fatto correttamente, quella linea dovrebbe generare un errore, perché non sarà in grado di trovare la classe. Dopo ciò, non ne hai più bisogno. – Leigh

+0

Ho usato [la versione jar che hai postato] (http://code.google.com/p/sqlitebot/downloads/detail?name=sqlitejdbc-v056.jar) nei commenti. – Leigh

Problemi correlati