我正在尝试使用处理(v3.4 Windows64)连接到本地Microsoft Access数据库。
根据之前的答案(Manipulating an Access database from Java without ODBC),我已经从此处(http://ucanaccess.sourceforge.net/site.html)下载了UCanAccess库,当前版本为4.0.4
它包括ucanaccess-4.0.4.jar
,并且在lib
文件夹下:commons-lang-2.6.jar
,commons-logging-1.1.3.jar
,hsqldb.jar
,jackcess-2.1.11.jar
这是我正在运行的简单草图代码:
import java.sql.*;
void setup() {
size(640, 360); // Size must be the first statement
stroke(255); // Set line drawing color to white
frameRate(30);
try{
Connection conn=DriverManager.getConnection("jdbc:ucanaccess://D:/Dati/Profili/M030098/Documents/Database1_test.accdb");
Statement s = conn.createStatement();
ResultSet rs = s.executeQuery("SELECT * FROM tab_one");
while (rs.next()) {
System.out.println(rs.getString(1));
}
}catch(Exception e){
e.printStackTrace();
}
}
我不确定在我的草图中正确导入5个库。没有它们,catch块将返回此消息:
java.sql.SQLException:找不到jdbc:ucanaccess:// C:/ ...我文件夹的路径... /Documents/Database1_test.accdb
的合适驱动程序
如果我将应付它们的5个JAR导入Processing\libraries
文件夹中,然后将行import hsqldb.jar;
或import hsqldb.*;
添加到我的草图中,则结果是此控制台错误:
找不到hsqldb的库
库必须安装在Sketchbook文件夹内名为“ libraries”的文件夹中(请参见“首选项”窗口)。
我发现的唯一有线方式是在库内创建一个专用文件夹,其名称与jar相同,包括jar的库子文件夹。他们全部都被重命名,删除了所有数字和破折号(见图)。
这样,库名称就可以在sketch > import library
下使用,如果选择了库名称,则可以向草图添加几条新的包含线(48)。
其中一个(import org.apache.commons.lang.enum.*;
)导致错误:Syntax error on token "enum", Identifier expected.
我刚考虑使用import org.apache.commons.lang.*;
注释了这一行。
结果,发生新错误,引用到行
Statement s = conn.createStatement();
:
the type Statement is ambiguous
然后我寻找了图书馆冲突,并也评论了import org.hsqldb.*;
现在它似乎可以正常工作,我可以以一种非常混乱的方式检索我的表信息。
是否有只导入5个库的正确方法?
更新
根据Kevin Workman的建议,也可以在草图窗口中拖放JAR文件,并在草图文件夹中自动创建一个code
文件夹,其中包括拖放的文件。
它包括所有软件包,不需要任何代码行,无论如何,此过程有两个缺点:
由于在幕后它在草图文件夹中创建了一个code
文件夹,因此只为一个草图导入软件包,而不是“全局”库文件夹,因此需要将其复制每个草图。
在导入软件包后,我注意到了两个错误:一个是由于org.apache.commons.lang.enum.*
使用专用词enum
和org.hsqldb.*
导致冲突中的Statement对象的定义与另一个图书馆。拖放技术不允许选择要排除的单个库来解决这些错误。
答案 0 :(得分:0)
我知道将.jar
文件导入到Processing草图中的最简单方法是将.jar
文件拖放到Processing编辑器中。
对您的5个.jar
文件执行此操作。如果您对它在幕后的操作感到好奇,请在进行拖动后查看草图目录。
无耻的自我推广:here是有关在Processing中使用库的教程。