【发布时间】:2020-08-08 16:23:31
【问题描述】:
我有一个使用 Microsoft Access 数据库的 android 应用程序。当我尝试运行该应用程序时,出现以下错误:
W/System.err: net.ucanaccess.jdbc.UcanaccessSQLException: UCAExc:::0.0 given file does not exist: C:\Users\User\Documents\tets.accdb
但是当您转到文件位置时,该文件存在。 我已经尝试更改文件路径,但在大多数情况下,它不起作用,但有时它会给我另一个错误:
对于这个文件路径String url = "jdbc:ucanaccess:/C:/Users/User/Documents/tets.accdb";
它给了我这个错误:
W/System.err: java.sql.SQLException: No suitable driver found for 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。
-
这不是问题,我在 DB 名称中拼错了单词 test,所以它被称为 tets
-
好的,首先删除
//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
标签: java android ms-access ucanaccess