Oracle spatial 使用的一些感受
来源:互联网 发布:模块化编程 编辑:程序博客网 时间:2024/06/06 16:30
最近由于项目需求,要实现Oracle数据源,主要是Oracle Spatial 。虽然之前写过PostGIS和Sqlite的,但是对Oracle基本上算一无所知。刚开始接触的那几天,头都大了,Oracle里面的东西分的太细了,有些东西都不知道去哪找。为了使用Oracle中的mapview,费了半天总算配置成功了,结果使用起来不够人性化,那个⊙﹏⊙b汗。
看了一堆英文材料对Oracle Spatial才算有了点了解,开始动手编码了。写完一些基本的空间数据的增删改查,以为差不多了,因为之前也写过另外两个数据源的,Sql语法也差不多,写起来还算轻车熟路。满怀希望单元测试都OK,结果刚测一个Insert,就一直报错(+_+),ORA-1461:仅能绑定要插入LONG列的LONG值。查看一下数据库表,里面根本就没有Long类型字段,将sql语句直接放到SQL/Plus中运行,又改抛ORA-01704:文字字符串过长。在网上寻觅了一下发返现,原来Oracle SQL语句长度不能超过4000字节,囧o(╯□╰)o。原来我在写插入语句时直接将Geometry对象转化为WKT格式,使用SDO_Geomtry(wkt clob,srid number default Null)方法,而测试用的一个polygon对象就超过4000了,泪奔了~~~~(>_<)~~~~ 。试了很久,最后在一个国外的帖子上看到了解决方案,使用变量绑定的方式,将字符串转化为OracleClob对象,再设置变量值就OK。下面是截取部分代码:
OracleParameter tempPara = new OracleParameter();
tempPara.ParameterName = paramName;
tempPara.OracleDbType = OracleDbType.Clob;
tempPara.Direction = ParameterDirection.Input;
OracleClob clob = new OracleClob(orclConn);//设定为Clob,orclConn 为OracleConnection实例
clob.Write((paraValue as string).ToCharArray(), 0, (paraValue as string).ToCharArray().Length);//paraValue为变量实际值
tempPara.Value = clob;
orclComm.Parameters.Add(tempPara);//orclComm:OracleCommand实例
测试一下,顺利过关,O(∩_∩)O~。
顺便说一下,使用Oracle提供的数据访问组件(Oracle.DataAccess.dll)时要安装Oracle 客户端,及ODP,并且要注意ODP和Oracle的版本问题,之前没有注意,就出现了一堆问题。
Oracle Spatial用了一下,还是很强大的。从中学到了不少东西,虽然过程是痛苦的~~
- Oracle spatial 使用的一些感受
- Oracle培训的一些感受
- 使用ECLIPSE的一些感受!
- 使用FIREFOX的一些感受
- 关于最近使用stl的一些感受
- 本人使用PB10的一些感受
- 使用linuxmint系统的一些感受
- SublimeText3和EverEdit 的一些使用感受
- Oracle Spatial的简单应用
- oracle spatial
- Oracle Spatial
- Oracle Spatial
- Oracle Spatial
- Oracle Spatial
- 使用 Oracle Spatial 创建地图混搭
- 使用 Oracle Spatial 创建地图混搭
- Oracle Spatial 产品概要以及使用概述
- javascript的一些感受
- Form验证模式和Windows 验证模式
- Silverlight本地化
- 解决php中文乱码
- php连接mysql
- oracle知识讲解
- Oracle spatial 使用的一些感受
- 自己刚写的一个 file check 的SHELL
- 埃及分数;枚举递归树深度+回溯;习惯这些繁琐的搜索题;
- Flex 实现LineChart曲线——动态加载组件
- silverlight中获取网页代码示例
- 给你一台冰箱,你将如何测试它
- 磁盘主引导区
- nfs服务动态挂载
- 29内核输入子系统多点上报机制实现