jdbc/Jackcess/Ucanaccess - 无法连接到链接到共享点列表的访问表

Posted

技术标签:

【中文标题】jdbc/Jackcess/Ucanaccess - 无法连接到链接到共享点列表的访问表【英文标题】:jdbc/Jackcess/Ucanaccess - Not able to connect to access tables linked to sharepoint list 【发布时间】:2016-12-29 21:06:52 【问题描述】:

我一直在尝试使用 jackcess/ucanaccess 连接到本地计算机上的访问数据库。该数据库与共享点列表链接。连接发生,我可以从表中读取。当我删除指向其中一个访问表的共享点列表的链接并再次将其与共享点列表链接时,出现以下错误:

TestJdbc.main()[常量,f_0194596E3DC6402283A012D0661E7517_Attachments,f_41905A7F89E440EDBFA0B6B30C57EE68_CDAttachment,f_431F6C05710944EEA2F443EAC1A43A10_JOIN_XRef2Capability,f_6030D9CC0C874CF5A31AB134BBF1A10E_BackgroundAttachment,f_7EA55A8F5B1141E68CEECFD2DB672397_ProjectAttachment,LUT_Domain,LUT_Requirement_Types,LUT_XRef_Types,MASTER_ePlanProject,名称自动更正保存故障,叔个人-状态,叔角色的系统,TABLE_BackgroundAttachments,TABLE_Benefits, TABLE_Capabilities、TABLE_DepartmentImpact、TABLE_LogHistory、TABLE_ProjectAttachments、TABLE_Requirements、TABLE_Terminology、TABLE_XRefs、UserInfo] 线程“主”java.io.FileNotFoundException 中的异常:给定文件不存在:https:\workspace.web.att.com\sites\ISDE\SmartIA;LIST=4131DABC-4E9F-4F75-95DC-CE26A0F63EC3 ;VIEW=;RetrieveIds=是 在 com.healthmarketscience.jackcess.impl.DatabaseImpl.open(DatabaseImpl.java:365) 在 com.healthmarketscience.jackcess.DatabaseBuilder.open(DatabaseBuilder.java:252) 在 com.healthmarketscience.jackcess.DatabaseBuilder.open(DatabaseBuilder.java:291) 在 com.healthmarketscience.jackcess.util.LinkResolver$1.resolveLinkedDatabase(LinkResolver.java:42) 在 com.healthmarketscience.jackcess.impl.DatabaseImpl.getTable(DatabaseImpl.java:984) 在 com.healthmarketscience.jackcess.impl.DatabaseImpl.getTable(DatabaseImpl.java:928) 在 com.healthmarketscience.jackcess.impl.DatabaseImpl.getTable(DatabaseImpl.java:81) 在 com.attprism.rest.common.TestJdbc.main(TestJdbc.java:54) 14:17:24.843 错误:[PacketDispatcher.cpp:154] 运行:执行命令时出现异常:TransportException [510/201] 没有与调试器的打开连接

我的代码是这样的

package com.attprism.rest.common;

import java.io.File;
import java.io.IOException;
import java.sql.SQLException;
import java.util.Set;

import com.healthmarketscience.jackcess.Database;
import com.healthmarketscience.jackcess.DatabaseBuilder;
import com.healthmarketscience.jackcess.Row;
import com.healthmarketscience.jackcess.Table;

public class TestJdbc 

    public static void main(String[] args) throws IOException, SQLException,
            ClassNotFoundException 

        Class.forName("net.ucanaccess.jdbc.UcanaccessDriver");
        Database db = DatabaseBuilder.open(new File(
                "C://Users//sm501y//Desktop//SmartIA_ODBC.accdb"));
        Set<String> tables = db.getTableNames();
        System.out.println("TestJdbc.main()" + tables);
        Table table = db.getTable("CONSTANTS");
        for (Row row : table) 
            System.out
                    .println("Column 'a' has value: " + row.get("Project_ID"));
        
    

有什么帮助吗?

【问题讨论】:

【参考方案1】:

目前,UCanAccess 只能使用“本机”Access 表,即实际存储在 .accdb 或 .mdb 文件(或相关变体,如 .accde、.mde 等)中的表。 UCanAccess 可以对本地链接表(存储在单独的 .accdb/.mdb 文件中的 Access 表的链接)进行操作,但它不能与 ODBC 链接表(存储在 SQL Server、mysql 等中的表的链接)和它显然不能与链接到 SharePoint 的表一起使用。

您可能想在 C# 中使用 System.Data.Odbc 做一个小测试,看看它是否可以与 SharePoint 链接表一起使用。我没有尝试过,但我知道使用 System.Data.Odbc 的 .NET 应用程序能够与 SQL Server 上的 ODBC 链接表一起使用,所以它也许也可以与 SharePoint 表一起使用。

【讨论】:

感谢您的回复! 我们的应用程序托管在 linux / jboss 应用服务器上,我必须连接到链接到共享点列表的访问表,而无需 odbc DS。我正在寻找一些像 ucanaccess 这样的库,还有其他你可以推荐的 api 吗?

以上是关于jdbc/Jackcess/Ucanaccess - 无法连接到链接到共享点列表的访问表的主要内容,如果未能解决你的问题,请参考以下文章