未由SQLite JDBC驱动程序实现 [英] not implemented by SQLite JDBC driver

查看:119
本文介绍了未由SQLite JDBC驱动程序实现的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我已经使用

I have successfully created a ColdFusion datasource to a SQLite database using the sqlitejdbc-v056.jar. Then I added this query to my .cfm page

<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>

当我在IE和Firefox中浏览到.cfm页面时,出现错误消息:

When I browse to my .cfm page in IE and Firefox, I get the error:

不是由SQLite JDBC驱动程序实现的

not implemented by SQLite JDBC driver

该错误发生在C:/Inetpub/wwwroot/intra/SmartTV/UnassignedTickets/Tickets.cfm:第204行

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

202:
203:
204:
205:选择
206:id,

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

SQL SELECT ID,摘要,状态,created_at,assigned_to FROM 状态为打开"且分配给的票证为NULL ORDER BY created_at DESC DATASOURCE Spiceworks资源:

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.

堆栈跟踪

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)

更新:

我的.jar文件位于C:\ColdFusion10\cfusion\lib\C:\ColdFusion10\cfusion\wwwroot\WEB-INF\lib下.在ColdFusion数据源中:

I have my .jar file under C:\ColdFusion10\cfusion\lib\ and C:\ColdFusion10\cfusion\wwwroot\WEB-INF\lib. In ColdFusion Datasources:

  • CF数据源名称:Spiceworks
  • JDBC URL:jdbc:sqlite:\ spiceworks \ C $ \ Program Files \ Spiceworks \ db \ spiceworks_prod.db
  • 驱动程序类:org.sqlite.JDBC
  • 驱动程序名称:sqlite-jdbc-3.7.15-M1.jar
  • 用户名:<user>
  • 密码:<password>
  • CF Data Source Name: Spiceworks
  • JDBC URL: jdbc:sqlite:\spiceworks\C$\Program Files\Spiceworks\db\spiceworks_prod.db
  • Driver Class: org.sqlite.JDBC
  • Driver Name: sqlite-jdbc-3.7.15-M1.jar
  • User name: <user>
  • Password: <password>

如评论中所建议,我尝试了更简单的语句:

As suggested in the comments, I tried simpler statements:

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

...和不同的驱动程序版本

  • sqllite-jdbc4-3.8.2-SNAPSHOT.jar
  • sqlite-jdbc-3.7.15-M1.jar

但仍然出现相同的错误.

but still got the same error.

推荐答案

我认为原始错误的含义与它所说的完全一样.数据源调用了您使用的驱动程序未实现的方法.特别是org.sqlite.jdbc3.JDBC3Statementexecute(..)方法. 该驱动程序的源代码表明该方法没有执行任何操作.它只是抛出您所看到的错误消息.

I think the original error means exactly what it says. The datasource invoked a method that is not implemented by the driver you are using. Specifically the execute(..) method of org.sqlite.jdbc3.JDBC3Statement. The source for this driver shows that method does nothing. It simply throws the error message you are seeing.

但是,我认为您在类路径中有另一个版本的SQLite驱动程序jar.您发布的 sqlitejdbc-v056.jar 不会导致该错误,因为它甚至不包含JDBC3Statement类.可能发生的情况是CF正在加载另一版本的驱动程序(在您的类路径中).

However I think you have another version of the SQLite driver jar in your class path. The sqlitejdbc-v056.jar you posted could not cause that error because it does not even contain a JDBC3Statement class. What is probably happening is that CF is loading another other version of the driver (that is in your class path) instead.

在我的测试中,sqlitejdbc-v056.jar在CF10上工作正常.在再次添加该jar之前,请确保已从CF类路径中删除了SQLLite jar的 all 个版本,然后重新启动CF.否则,CF仍会自动加载它们,您将继续收到该错误消息.

In my tests, the sqlitejdbc-v056.jar worked fine with CF10. Before adding that jar again, make sure you have removed all versions of the SQLLite jar from your CF class path, and restart CF. Otherwise, CF will still load them automatically and you will continue to get that error message.

为确保已删除所有 jar ,请在重新启动后尝试创建主类的实例.如果下面的行引发找不到类"错误,则说明您已成功删除了它们.完成此操作后,请重新安装sqlitejdbc-v056.jar.

To ensure you have removed all of the jars, after restarting, try and create an instance of the main class. If the line below throws a "Class not found" error, you know have successfully removed them all. Once you have done that, go ahead an reinstall the 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.

这对我有用:

  1. 创建了空数据库C:/temp/sqlite/products.db
  2. sqlitejdbc-v056.jar下载到C:\ColdFusion10\cfusion\wwwroot\WEB-INF\lib
  3. 重新启动CF
  4. 创建了其他" DSN
  5. DSN设置
    • DS名称:SQLite
    • JDBC URL:jdbc:sqlite:C:/temp/sqlite/products.db
    • 驱动程序类:org.sqlite.JDBC
  1. Created empty database C:/temp/sqlite/products.db
  2. Downloaded sqlitejdbc-v056.jar into C:\ColdFusion10\cfusion\wwwroot\WEB-INF\lib
  3. Restarted CF
  4. Created "Other" DSN
  5. DSN Settings
    • DS Name: SQLite
    • JDBC URL: jdbc:sqlite:C:/temp/sqlite/products.db
    • Driver Class: org.sqlite.JDBC

这篇关于未由SQLite JDBC驱动程序实现的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆