ODP.NET有关spatila函数 问题

shen521941 2008-11-08 09:23:14
我用odp.net 调用数据库 返回xml数据集
单独的只是select * from 的时候没问题
能返回数据集

但我用空间函数select * from where SDO_FILTER(...)的时候 他报错:
e.ToString () "Oracle.DataAccess.Client.OracleException ORA-03113: 通信通道的文件结束 在 Oracle.DataAccess.Client.OracleCommand.XmlHandleException(OracleException e)\r\n 在 Oracle.DataAccess.Client.OracleCommand.ExecuteXmlQuery(Boolean wantResult)\r\n 在 Oracle.DataAccess.Client.OracleCommand.ExecuteNonQuery()\r\n 在 GetGeo._geo.GetSpatialData(String connnectionstring, String sql) 位置 F:\\练习\\GetGeo\\GetGeo\\_geo.cs:行号 35" string



但 我的sql语句在oracle控制台上运行的时候 不错 能返回要的到得值



请大家帮帮忙
...全文
237 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
shen521941 2008-11-08
  • 打赏
  • 举报
回复
You can access the SDO_GEOMETRY object as an XmlTextReader or XmlDocument using ODP.NET. Here's a C# example:

using System;
using System.Data;
using System.Xml;
using Oracle.DataAccess.Client;
using Oracle.DataAccess.Types;

string cnctstr = "User ID=scott;Password=tiger;";
string sqltext = "SELECT ID, GEOM FROM TABLE";

OracleConnection con = new OracleConnection(cnctstr);
OracleCommand cmd = new OracleCommand(sqltext,con);
cmd.XmlCommandType = OracleXmlCommandType.Query;
cmd.BindByName = true;
cmd.CommandText = sqltext;
XmlTextReader reader = (XmlTextReader) cmd.ExecuteXmlReader();

// and then if you need it as a document
XmlDocument doc = new XmlDocument();
doc.Load(reader);
reader.Close();


The trick seems to be doing this in reverse and inserting/updating/filtering by a very large geometry object (eg. working with polygon that have > 400 vertices). If you use the SDO_GEOMETRY constructor in your SQL statement and the geometry linestring is > 2048 characters, it causes ORA-03113 to be returned to ODP.NET and an Oracle core dump with access violation is shown in the trace log. If anyone has any ideas outside of using OCI that'd be great.
======================
只是引用别人得 你看下 我想是的 是odp.net得问题
但是改怎么解决
===================
I've been using the XmlDocument and XmlTextReader technique for a while now to query spatial tables and it's very fast but you need to use a XmlTextReader to get good performance and skip the XmlDocument.Load() step. Never could figure out how to load a data table either. OCI was another method we tried to use but it proved very painful in .NET so we went with this Xml approach.

Inserting/updating large geometry objects, or using SDO_FILTER with a large transient polygons with hundreds of points, is a pain though when you have large linestrings of ordinates that are > 2048 characters in length. Eg.

select T.ID, T.GEOM from TABLE T where SDO_FILTER(T.GEOM, MDSYS.SDO_GEOMETRY(...some really big polygon...), 'mask=anyinteract') = 'TRUE';

This statement will fail with ORA-03113 errors and access violations/core dumps reported in the logs if the length of the SQL statement is too long, which for me maxes out at about 200 points.

There doesn't appear to be a way in ODP.NET to bind a VARRAY of numbers representing the SDO_ORDINATE_ARRAY(), or bind an SDO_GEOMETRY object itself, to your SQL statement.

Does anyone know which release Oracle plans to support objects as bind variables in ODP.NET?
shen521941 2008-11-08
  • 打赏
  • 举报
回复
发错地址了 是这个http://forums.oracle.com/forums/thread.jspa?threadID=320597


- -!
BlueskyWide 2008-11-08
  • 打赏
  • 举报
回复
可能是整个用户下存有两张损坏的表。
一个表一个表来吧。


[Quote=引用 9 楼 shen521941 的回复:]
不过还是找不到该怎么解决这个问题
你以前是怎么解决的?
[/Quote]
shen521941 2008-11-08
  • 打赏
  • 举报
回复
不过还是找不到该怎么解决这个问题
你以前是怎么解决的?
shen521941 2008-11-08
  • 打赏
  • 举报
回复
http://forums.oracle.com/forums/thread.jspa?threadID=640330&tstart=-6
还是看英文版得吧
shen521941 2008-11-08
  • 打赏
  • 举报
回复
谢谢BlueskyWide
你的意思是?

你看看这个
http://translate.google.cn/translate?hl=zh-CN&sl=en&u=http://forums.oracle.com/forums/thread.jspa%3FthreadID%3D320597&sa=X&oi=translate&resnum=3&ct=result&prev=/search%3Fq%3DORA-03113%2Bodp.net%26hl%3Dzh-CN%26newwindow%3D1%26rlz%3D1B2GGFB_zh-CNCN285CN297
BlueskyWide 2008-11-08
  • 打赏
  • 举报
回复
shen521941 2008-11-08
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 BlueskyWide 的回复:]
以前碰到过这种情况,记不得怎么解决了。

服务器端字符集和客户端字符集是否匹配?
[/Quote]

我的sql语句在 sql scratchpad里面运行就没问题
我用 XmlReader xmlreader = comm.ExecuteXmlReader();执行

BlueskyWide 2008-11-08
  • 打赏
  • 举报
回复
以前碰到过这种情况,记不得怎么解决了。

服务器端字符集和客户端字符集是否匹配?
shen521941 2008-11-08
  • 打赏
  • 举报
回复
to:楼上
你们说这些资料我都试过 貌似不行
行了 我也不会花100分在这问, 我都搜过了

以我得感觉 是不是odp.net不支持spatial函数查询?
BlueskyWide 2008-11-08
  • 打赏
  • 举报
回复
BlueskyWide 2008-11-08
  • 打赏
  • 举报
回复
听说sqlnet.ora文件里有SQLNET.AUTHENTICATION_SERVICES=(NTS) 这一行,
如果有去掉试试。


[Quote=引用楼主 shen521941 的帖子:]
我用odp.net 调用数据库 返回xml数据集
单独的只是select * from 的时候没问题
能返回数据集

但我用空间函数select * from where SDO_FILTER(...)的时候 他报错:
e.ToString () "Oracle.DataAccess.Client.OracleException ORA-03113: 通信通道的文件结束 在 Oracle.DataAccess.Client.OracleCommand.XmlHandleException(OracleException e)\r\n 在 Oracle.DataAccess.Client.OracleCommand.ExecuteXmlQuery(Boo…
[/Quote]
代码转载自:https://pan.quark.cn/s/a4b39357ea24 LA 1010 逻辑分析仪被视作一种效能卓越的数字信号分析设备,其核心功能在于对数字通信协议,例如I²C,进行检测与解构。本资源将集中阐述LA 1010的操作流程以及如何借助该设备对I²C协议的波形展开分析。 确保逻辑分析仪被正确地连接至目标系统是极为关键的环节。在运用LA 1010的过程中,必须将分析仪的通道0与通道1分别对应连接至目标装置的SCL(时钟)与SDA(数据)线路。务必保证连接的稳固性且无任何干扰因素,以此确保数据采集的精确度。 随后,需要设定采样参数。采样频率对于能否成功捕捉到信号具有决定性的作用。针对I²C协议,通常选用的采样频率范围介于100kHz到400kHz之间,这一范围的选择取决于实际应用场景中I²C总线的运行速度。然而,LA 1010所能达到的最高采样速率可能高达500MHz,因此需要根据具体需求进行相应的调整。此外,还必须精心挑选适配目标设备工作电压的电压等级,例如3.3V、5V或1.8V。 在软件操作层面,需要选取恰当的通道与协议种类,即I²C。一旦启动采样,逻辑分析仪便开始记录相关数据。软件界面通常会实时展示波形图,为观察与分析提供便利。 关于I²C协议波形的解读,我们可以遵循以下步骤: 1. 总线处于空闲状态时:SCL与SDA均维持在高电平位置,这表明总线当前未进行数据传输。 2. 传输起始信号:当SCL处于高电平期间,SDA线从高电平转换至低电平,此动作标志着数据传输的开始。 3. 地址、数据及应答的识别:在每一个SCL高电平脉冲的持续时间内,SDA线上的电平状态代表了数据位。地址与数据的传输均为双向过程,而读写标识则由SDA线上的电平来...
内容概要:本文介绍了一种基于有限元分析(FEA)获取的磁通链接图来构建高精度永磁同步电机(PMSM)数学模型的方法,并在Simulink环境中实现仿真。该方法通过有限元软件提取电机在不同工况下的非线性磁通特性数据,建立精确的磁链-电流-转子位置映射关系,有效克服了传统线性模型在反映铁芯饱和、交叉耦合等非线性效应方面的局限性。所构建的模型能够更真实地模拟PMSM的实际电磁行为,适用于高性能控制算法(如矢量控制、直接转矩控制、模型预测控制等)的研发与验证,显著提升了控制系统在动态响应、效率优化和稳定性方面的仿真准确性。; 适合人群:具备电机控制理论基础、熟悉有限元分析与Simulink仿真的研究生、科研人员及从事电机设计与驱动系统开发的工程技术人员。; 使用场景及目标:①用于高精度永磁同步电机控制系统的设计、仿真与性能评估;②支持先进控制策略(如MPC、滑模控制、自适应控制)在非线性电机模型上的验证与优化;③为电机参数敏感性分析、能效优化、故障诊断与容错控制研究提供可靠的仿真平台; 阅读建议:建议读者结合ANSYS Maxwell、JMAG等有限元工具与Matlab/Simulink进行联合仿真,掌握从电磁场建模、数据提取、查表插值到控制系统集成的完整流程,并参考文中模型架构与数据处理方法,逐步复现、验证并拓展适用于特定电机结构的高保真仿真模型。

3,499

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 高级技术相关讨论专区
社区管理员
  • 高级技术社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧