使用C#操作Oracle Spatial的SDO_GEOMETRY对像(读取和写入)--方法2
如果不借助ODAC的自定义数据类型,那么也可以使用Oracle Spatial的几个内置SQL函数来实现SDO_Geometry对象的操作
这种方法需要在数据库端对所有数据进行一次转换(不管是在select 还是insert时),有些情况下会对性能和执行时间有比较大的影响,需要注意
OracleCommand cmd = new OracleCommand(@"SELECT geo.get_wkb() FROM geoinfo WHERE id= ‘12‘ ", con); con.Open(); byte[] wkb = (byte[])cmd.ExecuteScalar();
OracleCommand cmd = new OracleCommand(@"SELECT geo.get_wkt() FROM geoinfo WHERE id= ‘12‘ ", con); con.Open(); string wkt = (string)cmd.ExecuteScalar();
OracleCommand cmdGeom = new OracleCommand(@"insert into geoinfo values (13,sdo_geometry(:geom,31297))", con); //31297为srid,实际使用时应替换成自己的srid OracleParameter p1 = new OracleParameter(":geom",OracleDbType.Blob); p1.Value = wkb; //wkb为byte[] cmdGeom.Parameters.Add(p1); con.Open(); int i = cmdGeom.ExecuteNonQuery(); con.Close();
OracleCommand cmdGeom = new OracleCommand(@"insert into geoinfo values (13,sdo_geometry(:geom,31297))", con); OracleParameter p1 = new OracleParameter(":geom",OracleDbType.Clob); p1.Value = wkt; //wkt为string cmdGeom.Parameters.Add(p1); con.Open(); int i = cmdGeom.ExecuteNonQuery(); con.Close();
使用C#操作Oracle Spatial的SDO_GEOMETRY对像(读取和写入)--方法2,古老的榕树,5-wow.com
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。