我正在尝试使用Processing编写Android应用,并且应用需要与存储在设备上的Access数据库进行通信。为此,我尝试使用UCanAccess,因为Java 8显然已经放弃了对此类内容的原生支持。无论出于何种原因,自从添加此代码后,运行我的应用程序会导致其崩溃并显示消息“不幸的是,我的第一个Android应用程序已停止。”
为什么会这样?以下是与问题相关的代码部分:
import java.io.FileOutputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
import java.sql.ResultSet;
import net.ucanaccess.converters.TypesMap.AccessType;
import net.ucanaccess.ext.FunctionType;
import net.ucanaccess.jdbc.UcanaccessConnection;
import net.ucanaccess.jdbc.UcanaccessDriver;
static class databasesHandler
{
static boolean readFromDatabase(int uid)
{
try {
Class.forName("net.ucanaccess.jdbc.UcanaccessDriver");
Connection con = DriverManager.getConnection("jdbc:ucanaccess:///sdcard/Android/data/accessDatabase.mdb");
Statement stmt = con.createStatement();
stmt.execute("SELECT saveVal FROM userVals WHERE userId = " + str(uid));
ResultSet rs = stmt.getResultSet();
boolean spotFilled = false;
if (rs != null)
{
while (rs.next())
{
spotFilled = boolean(rs.getInt("gameSaved"));
}
}
stmt.close();
con.close();
return spotFilled;
}
catch(Exception e) {
e.printStackTrace();
}
return false;
}
}
我已将UCanAccess库及其lib
文件夹放在我的Processing sketch的code
文件夹中,在我进行此更改之前,该应用程序运行良好。