我正在尝试访问存储在类路径中的数据库。我已经安装了ucanaccess 3.0.0以及所有必需的.jars。
我的项目层次结构:
这是我到目前为止的代码:
[Reflection.Assembly]::LoadFile("E:\oracle\product\11.2.0\ODP.NET\bin\2.x\Oracle.DataAccess.dll")
$constr = "User Id=system;Password=pass;Data Source=API"
$conn= New-Object Oracle.DataAccess.Client.OracleConnection($constr)
$conn.Open()
$sql="select * from dba_users"
$command = New-Object Oracle.DataAccess.Client.OracleCommand($sql,$conn)
$reader=$command.ExecuteReader()
while($reader.Read()){
$reader.GetString(0)
}
$conn.Close()
这是一个简单的登录屏幕,我只是在点击按钮时测试与数据库的连接。我知道引用绝对文件路径并不好,所以我认为在类路径中使用该文件会更好。
我收到错误
找不到合适的jdbc驱动程序:ucanaccess:file:/ C:/Users/Gandalf/workspace/FubbleApp/bin/database/theDB.accdb
所以我认为它必须是“/database/theDB.accdb”,但我不知道如何解决这个问题。
感谢任何帮助。提前致谢
答案 0 :(得分:3)
您在连接URL中提供的数据库文件(.accdb或.mdb)的路径必须是
绝对路径,或
当前工作目录的相对路径,该路径在您的应用程序运行时生效,在您的情况下似乎是" C:/ Users / Gandalf / workspace / FubbleApp / bin /&# 34;
如果您希望应用程序自动在CLASSPATH中搜索数据库文件,您需要提供自己的代码来执行此操作,或者包含一些第三方代码来搜索您。
答案 1 :(得分:1)
我认为accdb必须在jar文件之外。我之所以这样说是因为jdbc是一个协议,你必须能够在数据库中写入并在存档中写入数据库,你必须重新存档并再次存档数据库。我认为你不能轻易做到......解决方案是...相对于jar或绝对路径。 (与jar文件在同一个文件夹中)