|
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
|