首页 / 浏览问题 / 桌面GIS / 问题详情
打开oracle数据源失败
34EXP 2017年08月09日
打开oracle数据源失败

1个回答

您好,请检查oracle数据库与iDesktop的位数是否一致,信息是否输入正确,如果检查完还不能打开,请发报错截图。
4,524EXP 2017年08月10日

oracle客户端可以正常连接服务端

请问您新建Oracle用户了吗?都赋予什么权限了?
配置了服务名,好像没有搞权限~
咋办,就是连不上,好忧伤~
那你新建一个Oracle用户,然后赋予该用户DBA、RESOURCE和CONNECT这三个权限,再用iDesktop新建数据库型数据源试一下。
待我来百度一下,怎么建这个用户,是在net manager里建吗?
可以用sqlplus新建,具体步骤百度能查到。
恩,建好了,连上了,其他的电脑连上同一个实例,可以共享数据的吧~
还有个问题,我用桌面开发,如何用代码连接这个数据源呢
其他电脑有Oracle客户端就可以。

您好,示例代码如下:

         datasourceConnectInfo.EngineType = EngineType.OraclePlus;
        datasourceConnectInfo.Server = "Server";
        datasourceConnectInfo.User = "User";
        datasourceConnectInfo.Password = "password";
        datasourceConnectInfo.Alias = "ORACLE";
Workspace workspace = new Workspace();
            //定义数据源集合类(数据源从工作空间中获取)
            Datasources dataSources = workspace.Datasources;
            //设置数据源连接信息
            DatasourceConnectionInfo conInfo = new DatasourceConnectionInfo();
            conInfo.Server = "ORATEST";
            conInfo.Database = "super";
            conInfo.User = "super";
            conInfo.Password = "sa";
            conInfo.Alias = "ORATEST_super";
            conInfo.EngineType = EngineType.OracleSpatial;
            //打开数据源
            Datasource dataSouce = dataSources.Open(conInfo);

我这样写的,但是打开失败 难过
conInfo.Database = "super";这一句不用写哈

软件里这样写,可以成功连上,但是代码就连不上

1.数据库名称不用填,oracle是一个用户就管理一个数据库,所以只需要填用户名,密码,实例名,数据库别名。

2.保证你组件引用的位数跟oracle数据库位数一致
我下的包的32位的,引用的dll应该也是32位的吧,桌面软件上可以成功连接,那应该说明连接信息是正确的,如果我需要重新下32位的组件,我在哪里可以下载到呢?

你可以试一下不写这一句能连上不,到这里去下载http://support.supermap.com.cn/DownloadCenter/ProductPlatform.aspx

Workspace workspace = new Workspace();
            //定义数据源集合类(数据源从工作空间中获取)
            Datasources dataSources = workspace.Datasources;
            //设置数据源连接信息
            DatasourceConnectionInfo conInfo = new DatasourceConnectionInfo();
            conInfo.Server = "ORATEST";
            //////conInfo.Database = "super";
            conInfo.User = "super";
            conInfo.Password = "sa";
            conInfo.Alias = "ORATEST_super";
            conInfo.EngineType = EngineType.OracleSpatial;
            //打开数据源
            Datasource dataSouce = dataSources.Open(conInfo);

我是这么写的,没写数据库名,也连不上
我现在用的这个环境,就是在这个网址上下载的,我 下的这个包

SuperMap iDesktop 8C(2017) SP1 for Windows(32位)

还想请教个问题,超图的数据都是独占模式的吗,比如我有一个数据,我想一边展示,一边做处理,我看代码是不能打开两次,有没有共享模式呢?

你是做的桌面扩展开发还是组件开发?组件开发的话应该下载SuperMap iObjects .NET 8C(2017) SP1 for Windows(32位)(Bin包)这个包。

文件型的数据源和工作空间都是独占的,数据库型的数据源和工作空间不是独占的,比如您用的oracle数据源就不是独占的。

额,我调的API里的方法,是算桌面拓展开发还是组件开发呢?我咋没看到后面有bin的包,忧伤~
如果你是在iDesktop基础之上,做的插件,那么就是扩展开发,如果你是自己写的系统,界面是自己构建的,就是组件开发
我写的winform程序,我先下个32位bin的包,可是我现在有个功能是,有两个进程同时处理一个数据,独占模式好像是不能满足这个功能,之前说空间分析是并行计算的,是指的实现空间分析的功能,用的算法是并行处理的,并不是说我可以用同一个数据做处理分析吧
Oracle数据源不是独占的,是支持多个进程同时处理的

我们说的并行是指多线程,空间分析是支持多线程的

你Oracle数据库是在本地还是你通过客户端远程访问的Oracle数据库?

本地Oracle数据库的话保证你引用的组件位数跟Oralce数据库位数一致

远程访问Oracle数据库的话保证你引用的组件位数跟客户端位数一致
那server端,多个同时并发处理处理,可咋办~
本来就是支持多端访问Oracle数据源的,这个不需要用户进行处理

我刚下的那个32位的bin环境,从这个里面引用dll程序报错,输出路径也改到这个Bin路径下的,无法正常运行~

换回之前的引用和输出路径,还是报同样的错,哎。

这个错误从以下几个方面检查

1.平台位数跟引用的组件位数一致

2.工作目录设为引用组件的bin目录
...