jython zxJDBC UCanAccess 驱动类?

Posted

技术标签:

【中文标题】jython zxJDBC UCanAccess 驱动类?【英文标题】:jython zxJDBC UCanAccess Driver Class? 【发布时间】:2020-09-28 18:27:54 【问题描述】:

试图让组合 jython-zxJDBC-UCanAccess 在我的 Windows 机器上工作;一整天都让我发疯,因为我一直在发疯

zxJDBC.DatabaseError(未找到驱动程序 [net.ucanaccess.jdbc.UcanaccessDriver]),以及 zxJDBC.DatabaseError(未找到驱动程序 [ucanaccess])

我一直在使用来自 Gord Thompson 的示例代码和我的详细信息 - 无论我尝试什么,都会因未找到驱动程序错误而失败:

from com.ziclix.python.sql import zxJDBC
#Or also import ucanaccess

jdbc_url = "jdbc:ucanaccess://Z:/Companies.accdb"
username = ""
password = ""
driver_class = "net.ucanaccess.jdbc.UcanaccessDriver"
#Or driver_class = "net.ucanaccess.jdbc.UcanloadDriver"

cnxn = zxJDBC.connect(jdbc_url, username, password, driver_class)
crsr = cnxn.cursor()
crsr.execute("SELECT * FROM tblSICs")
for row in crsr.fetchall():
    print row[0]
crsr.close()
cnxn.close()
单独使用 Jython 效果很好,我将它与 SikuliX IDE 一起使用 'from ... import zxJDBC' 无错误通过 UCanAccess 在我的 MS 的命令行 (console.bat) 中运行良好 访问数据库;所有 5 个 JAR 都在 CLASSPATH 变量中

我不明白什么是“driver_class”?我认为特定于数据库的驱动程序是通过 Jython/SikuliX 在 CLASSPATH 中查找的,其中可以看到“.../ucanaccess-5.0.0.jar”。

这里是类路径:

"c:\Users\User\AppData\Roaming\UCanAccess\lib\hsqldb-2.5.0.jar;c:\Users\User\AppData\Roaming\UCanAccess\lib\jackcess-3.0.1.jar;c:\Users\User\AppData\Roaming\UCanAccess\lib\commons-lang3-3.8.1.jar;c:\Users\User\AppData\Roaming\UCanAccess\lib\commons-logging
-1.2.jar;c:\Users\User\AppData\Roaming\UCanAccess\ucanaccess-5.0.0.jar"

这里是 SikuliX IDE 寻找资源的地方:

D:\Drawer 3\Sikuli\Training\UCanAccess.sikuli Z:\test.sikuli C:\Users\User\AppData\Roaming\Sikulix\Lib\site-packages C:\Users\User\AppData\Roaming\Sikulix\Lib C:\Users\User\AppData\Roaming\Sikulix\Extensions\Lib C:\Users\User\AppData\Roaming\Sikulix\Extensions\jython-standalone-2.7.2.jar\Lib 类路径 pyclasspath/

有人发现问题吗?

【问题讨论】:

【参考方案1】:

发现问题是 SikuliX 2.0.4 的一个特殊版本,它无法评估 CLASSPATH 变量。这是了解 JAR 位置的解决方法/SiluliX 的方法:

两种解决方案:

解决方案 A

SikuliX IDE 查看文件夹 ;所有五个相关的 JAR 文件需要放在该文件夹中(没有“lib”子文件夹,如 部署包):

ucanaccess-5.0.0.jar

commons-lang3-3.8.1.jar

commons-logging-1.2.jar

hsqldb-2.5.0.jar

jackcess-3.0.1.jar

检查通过查看找到的扩展 JAR SikuliX->工具->扩展...

解决方案 B

将所需的 JAR 保留在其原始部署文件夹中,然后添加 他们通往“特殊文件”的路径 'C:\Users\User\AppData\Roaming\Sikulix\Extensions\extensions.txt' 为:

ucanaccess = C:/Users/User/AppData/Roaming/UCanAccess/ucanaccess-5.0.0.jar

C:/Users/User/AppData/Roaming/UCanAccess/lib/commons-lang3-3.8.1.jar

C:/Users/User/AppData/Roaming/UCanAccess/lib/commons-logging-1.2.jar

C:/Users/User/AppData/Roaming/UCanAccess/lib/hsqldb-2.5.0.jar

C:/Users/User/AppData/Roaming/UCanAccess/lib/jackcess-3.0.1.jar

这将被评估,作为一种解决方法,而不是 CLASSPATH 变量

感谢您的帮助!

【讨论】:

以上是关于jython zxJDBC UCanAccess 驱动类?的主要内容,如果未能解决你的问题,请参考以下文章

python 如何使用Jython的数据库连接池(Tomcat)。大多数示例代码演示了使用zxJDBC对象,但是从我能做的一切

在从命令行调用的 Jython 脚本中使用 UCanAccess

zxjdbc调用存储过程的正确用法是啥?

UCanAccess:截断模式支持不起作用

ucanaccess :带有空格的意外令牌

在 Ucanaccess 中插入错误