我已经使用 sqlitejdbc-v056.jar
成功地为 SQLite 数据库创建了一个 ColdFusion 数据源。 .然后我将此查询添加到我的 .cfm 页面
<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 页面时,出现错误:
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.
堆栈跟踪
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 数据源中:
- CF 数据源名称:Spiceworks
- JDBC 网址:jdbc:sqlite:\spiceworks\C$\Program Files\Spiceworks\db\spiceworks_prod.db
- 驱动类:org.sqlite.JDBC
- 驱动名称:sqlite-jdbc-3.7.15-M1.jar
- 用户名:
<user>
- 密码:
<password>
按照评论中的建议,我尝试了更简单的语句:
-
SELECT * FROM tickets
-
SELECT id, summary, status, assigned_to FROM tickets
... 和 different driver versions
- sqllite-jdbc4-3.8.2-SNAPSHOT.jar
- sqlite-jdbc-3.7.15-M1.jar
还是报同样的错
最佳答案
我认为原始错误正是它所说的意思。数据源调用了您正在使用的驱动程序未实现的方法。特别是 org.sqlite.jdbc3.JDBC3Statement
的 execute(..)
方法。 The source for this driver表明该方法什么都不做。它只是抛出您看到的错误消息。
但是我认为您的类路径中有另一个版本的 SQLite 驱动程序 jar。 sqlitejdbc-v056.jar
您发布的内容不会导致该错误,因为它甚至不包含 JDBC3Statement
类。可能发生的情况是 CF 正在加载另一个版本的驱动程序(在您的类路径中)。
在我的测试中,sqlitejdbc-v056.jar
在 CF10 上运行良好。在再次添加该 jar 之前,请确保您已从 CF 类路径中删除了 所有 版本的 SQLLite jar,然后重新启动 CF。否则,CF 仍会自动加载它们,您将继续收到该错误消息。
为确保您已删除所有 jar ,重新启动后,尝试创建主类的实例。如果下面的行抛出“未找到类”错误,您就知道已成功将它们全部删除。完成后,继续重新安装 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.
这是对我有用的:
- 创建空数据库
C:/temp/sqlite/products.db
- 已将
sqlitejdbc-v056.jar
下载到C:\ColdFusion10\cfusion\wwwroot\WEB-INF\lib
- 重启CF
- 创建“其他”DSN
- DSN 设置
- DS 名称:SQLite
- JDBC 网址:jdbc:sqlite:C:/temp/sqlite/products.db
- 驱动类:org.sqlite.JDBC
关于sqlite - 未由 SQLite JDBC 驱动程序实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24124265/