使用C#操作OracleSpatial的SDO_GEOMETRY对像(读取和写入)(二)

2014-11-24 02:35:40 · 作者: · 浏览: 10
cleParameterGeo = new OracleParameter(); oracleParameterGeo.OracleDbType = OracleDbType.Object; oracleParameterGeo.UdtTypeName = "MDSYS.SDO_GEOMETRY"; cmd.Parameters.Add(oracleParameterGeo); //creating point SdoGeometry geoPoint = new SdoGeometry(); geoPoint.Sdo_Gtype = 2001; geoPoint.Point = new SdoPoint(); geoPoint.Point.X = 200; geoPoint.Point.Y = 400; oracleParameterGeo.Value = geoPoint; //insert point in table geoinfo cmd.ExecuteNonQuery(); //creating polygon SdoGeometry geoPolygon = new SdoGeometry(); geoPolygon.Sdo_Gtype = 2003; geoPolygon.ElemArray = new decimal[] { 1, 1003, 1 }; geoPolygon.OrdinatesArray = new decimal[] { 3, 3, 3, 10, 10, 10, 10, 3, 3, 3 }; oracleParameterGeo.Value = geoPolygon; //insert polygon into table geoinfo cmd.ExecuteNonQuery(); 在实际使用中,使用DataAdapter的Fill方法将Select *的查询结果放到DataTable中时,如果已经定义了SdoGeometry的类,查询结果会自动地将DataTable的那列认为是SdoGeometry,非常方便 ,例如 OracleDataAdapter mAdp = new OracleDataAdapter("select * from geoinfo", con); DataTable mDst = new DataTable(); mAdp.Fill(mDst); 此时mDst的第二列数据类型即为SdoGeometry