首页 / 浏览问题 / 组件GIS / 问题详情
iObjects.Java中如何正确使用copyDataset功能
252EXP 2023年03月31日
用iDesktop制作了一个工作空间,里面有一个udbx型数据源和一个postgresql型数据源 现在在udbx数据源里加入了一个表单数据,然后想要把表单数据拷贝到postgresql数据源中,使用的代码如下

public static String SaveData2Workspace(String saveDatasetName) {
        String str = workspaceStr2;
        
        // 定义工作空间
        Workspace workspace = new Workspace();
        WorkspaceConnectionInfo workspaceConnectionInfo = new
                WorkspaceConnectionInfo();
        workspaceConnectionInfo.setType(WorkspaceType.SXWU);
        workspaceConnectionInfo.setServer(str);

        // 打开工作空间
        boolean isOpen = workspace.open(workspaceConnectionInfo);

        if (isOpen) {
            Datasources datasources = workspace.getDatasources();
            Datasource datasource = datasources.get(0);
            Datasource datasource_GeoAI = datasources.get(1);
            
            // 在数据源 datasource 中取出名为“MachineLearningUDBX”的数据集,将其复制到数据源 GeoAI 下
            Dataset datasetVector = datasource.getDatasets().
                                          get("MachineLearningUDBX");

            // 返回一个可用的目标数据集的名称,复制数据集
            String datasetName = datasource_GeoAI.getDatasets().
                                 getAvailableDatasetName(saveDatasetName);
            System.out.println("datasetName = " + datasetName);
            Dataset newDataset = datasource_GeoAI.copyDataset(datasetVector,
                    datasetName, EncodeType.INT32, Charset.SHIFTJIS);
        }
        else {
        }

        // 释放工作空间资源
        workspaceConnectionInfo.dispose();
        workspace.dispose();
        
        return "save success";
    }

但是代码运行到copyDataset时报错,说数据集已经dispose了,请问这种情况应该怎么解决

1个回答

您好,您这边使用的iObject是什么版本?我这边用11.0.1版本运行您的代码没有问题。您也可以检查一下您的数据库连接是否正确。您可以直接打开数据源进行复制数据集的操作。

boolean open(DatasourceConnectionInfo connectioninfo)
451EXP 2023年03月31日
您好,使用的是iObjects.Java 10.0.0版本

用iDesktop打开这个工作空间里面2个数据源都是正常的,可以直接用iDesktop右击数据集复制
报错内容如下:

Exception in thread "main" java.lang.IllegalStateException: The object has been disposed.
下载了一下客户那边10.2.1的版本,也是同样的问题
您好,换了10.2.1后我这边可以正常显示了,感谢解答
好的,祝您工作顺利!
...