Java Android Studio:net.ucanaccess.jdbc.UcanaccessSQLException:eror文件不存在
我有一个使用微软Access数据库的android应用程序。当我尝试运行应用程序时,出现以下错误:Java Android Studio:net.ucanaccess.jdbc.UcanaccessSQLException:eror文件不存在,java,android,ms-access,ucanaccess,Java,Android,Ms Access,Ucanaccess,我有一个使用微软Access数据库的android应用程序。当我尝试运行应用程序时,出现以下错误: W/System.err:net.ucanaccess.jdbc.UcanaccessSQLException:ucaesc:::0.0给定文件不存在:C:\Users\User\Documents\tets.accdb 但当您转到文件位置时,该文件已存在。 我尝试过更改文件路径,但在大多数情况下,它不起作用,尽管有时会给我另一个错误: 对于此文件路径String url=“jdbc:ucanac
W/System.err:net.ucanaccess.jdbc.UcanaccessSQLException:ucaesc:::0.0给定文件不存在:C:\Users\User\Documents\tets.accdb
但当您转到文件位置时,该文件已存在。
我尝试过更改文件路径,但在大多数情况下,它不起作用,尽管有时会给我另一个错误:
对于此文件路径String url=“jdbc:ucanaccess:/C:/Users/User/Documents/tets.accdb”代码>
它给了我这个错误:
W/System.err:java.sql.SQLException:找不到适合jdbc的驱动程序:ucanaccess:/C:/Users/User/Documents/tets.accdb
我似乎无法理解URL之间的区别,或者是什么导致了这个问题。
有人知道是什么导致了这个问题吗
完整代码:
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import java.sql.*;
public class Books extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_books);
try {
Class.forName("net.ucanaccess.jdbc.UcanaccessDriver");
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
String url = "jdbc:ucanaccess://C:\\Users\\User\\Documents\\tets.accdb";
try {
Connection con = DriverManager.getConnection(url);
Statement statement = con.createStatement();
ResultSet res =statement.executeQuery("SELECT * FROM tets");
while(res.next()){
System.out.println(res.getInt(1));
}
con.close();
statement.close();
res.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
请确保它是正确的路径名称。您拼错了单词test并编写了tets,这可能就是问题所在?您的Android应用程序在模拟器/设备中运行,无法访问IDE主机的文件系统。要访问文件,必须将其导入emulator/device:
在Android Studio 3.0及更高版本中执行以下操作:
视图>工具窗口>设备文件资源管理器
请参见@shosho155好的,您可以保留2/
,但请确保tets.accdb确实存在。也许它被称为test
而不是tets
?你把test这个词拼错了吗?也许它被称为test而不是tets。这不是问题所在,我在DB名称中拼错了单词test,所以它被称为tetsOkay。首先,删除//C:
,它变成jdbc:ucanaccess:\\Users\\User\\Documents\\tets。accdb
现在添加3个斜杠,而不是2个斜杠jdbc:ucanaccess:\\\Users\\User\\Documents\\tets.accdb
并删除每个斜杠的2个斜杠,现在是:jdbc:ucanaccess:\\\Users\User\Documents\tets.accdb
如果数据库位置是app assets文件夹,那么这是必需的吗?不,但需要使用相对于emulator的URI,什么不是windows路径。看看我是否正确理解你的意思jdbc:ucanaccess://file:///android_asset/tets.accdb
这是我需要的路径吗?太糟糕了,你为什么不使用Androids默认SQLite数据库?不确定是否可以在Android上使用ucanaccess,因为没有示例,仅适用于其他平台上的java。