亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? oracle.cs

?? C# 的地圖開發例子(sharp map)
?? CS
?? 第 1 頁 / 共 2 頁
字號:
// Copyright 2006 - Humberto Ferreira
// Oracle provider by Humberto Ferreira (humbertojdf@hotmail.com)
//
// Date 2006-09-05
//
// This file is part of SharpMap.
// SharpMap is free software; you can redistribute it and/or modify
// it under the terms of the GNU Lesser General Public License as published by
// the Free Software Foundation; either version 2 of the License, or
// (at your option) any later version.
// 
// SharpMap is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
// GNU Lesser General Public License for more details.

// You should have received a copy of the GNU Lesser General Public License
// along with SharpMap; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA 

using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Text;
using Oracle.DataAccess.Client;


namespace SharpMap.Data.Providers
{
	/// <summary>
	/// Oracle dataprovider
	/// </summary>
	/// <remarks>
	/// <para>This provider needs the Oracle software client installed on the PC where the application runs.
	/// If you need to connect to an Oracle database, it has to have oracle client (or Oracle Instant Client) installed. </para>
	/// <para>You can download Oracle Client here:
	/// http://www.oracle.com/technology/software/index.html</para>
	/// <para>If client don4t need an instance of Oracle, a better option is to use Oracle Instant client
	/// http://www.oracle.com/technology/tech/oci/instantclient/index.html</para>
	/// <example>
	/// Adding a datasource to a layer:
	/// <code lang="C#">
	/// SharpMap.Layers.VectorLayer myLayer = new SharpMap.Layers.VectorLayer("My layer");
	///	string ConnStr = "Server=127.0.0.1;Port=5432;User Id=userid;Password=password;Database=myGisDb;";
	/// myLayer.DataSource = new SharpMap.Data.Providers.Oracle(ConnStr, "myTable", "GeomColumn", "OidColumn");
	/// </code>
	/// </example>
	/// <para>SharpMap Oracle provider by Humberto Ferreira (humbertojdf at hotmail com).</para>
	/// </remarks>
	[Serializable]
	public class Oracle : SharpMap.Data.Providers.IProvider, IDisposable
	{
		/// <summary>
		/// Initializes a new connection to Oracle
		/// </summary>
		/// <param name="ConnectionStr">Connectionstring</param>
		/// <param name="tablename">Name of data table</param>
		/// <param name="geometryColumnName">Name of geometry column</param>
		/// /// <param name="OID_ColumnName">Name of column with unique identifier</param>
		public Oracle(string ConnectionStr, string tablename, string geometryColumnName, string OID_ColumnName)
		{
			this.ConnectionString = ConnectionStr;
			this.Table = tablename;
			this.GeometryColumn = geometryColumnName;
			this.ObjectIdColumn = OID_ColumnName;
		}

        /// <summary>
		/// Initializes a new connection to Oracle
		/// </summary>
        /// <param name="username">Username</param>
        /// <param name="password">Password</param>
        /// <param name="datasource">Datasoure</param>
        /// <param name="tablename">Tablename</param>
        /// <param name="geometryColumnName">Geometry column name</param>
        /// <param name="OID_ColumnName">Object ID column</param>
        public Oracle(string username, string password, string datasource, string tablename, string geometryColumnName, string OID_ColumnName)
        : this("User Id=" + username + ";Password=" + password + ";Data Source=" + datasource, tablename, geometryColumnName, OID_ColumnName)
        {
            
        }


		/// <summary>
		/// Initializes a new connection to Oracle
		/// </summary>
		/// <param name="ConnectionStr">Connectionstring</param>
		/// <param name="tablename">Name of data table</param>
		/// <param name="OID_ColumnName">Name of column with unique identifier</param>
		public Oracle(string ConnectionStr, string tablename, string OID_ColumnName) : this(ConnectionStr,tablename,"",OID_ColumnName)
		{
			this.GeometryColumn = this.GetGeometryColumn();
		}

		private bool _IsOpen;

		/// <summary>
		/// Returns true if the datasource is currently open
		/// </summary>
		public bool IsOpen
		{
			get { return _IsOpen; }
		}

		/// <summary>
		/// Opens the datasource
		/// </summary>
		public void Open()
		{
			//Don't really do anything. oracle's ConnectionPooling takes over here
			_IsOpen = true;
		}
		/// <summary>
		/// Closes the datasource
		/// </summary>
		public void Close()
		{
			//Don't really do anything. oracle's ConnectionPooling takes over here
			_IsOpen = false;
		}
	

		#region Disposers and finalizers
		private bool disposed = false;

		/// <summary>
		/// Disposes the object
		/// </summary>
		public void Dispose()
		{
			Dispose(true);
			GC.SuppressFinalize(this);
		}

		internal void Dispose(bool disposing)
		{
			if (!disposed)
			{
				if (disposing)
				{
					//Close();
				}
				disposed = true;
			}
		}

		/// <summary>
		/// Finalizer
		/// </summary>
		~Oracle()
		{
			Dispose();
		}
		#endregion

		private string _ConnectionString;

		/// <summary>
		/// Connectionstring
		/// </summary>
		public string ConnectionString
		{
			get { return _ConnectionString; }
			set { _ConnectionString = value; }
		}

		private string _Table;

		/// <summary>
		/// Data table name
		/// </summary>
		public string Table
		{
			get { return _Table; }
			set { _Table = value; }
		}

		private string _GeometryColumn;

		/// <summary>
		/// Name of geometry column
		/// </summary>
		public string GeometryColumn
		{
			get { return _GeometryColumn; }
			set { _GeometryColumn = value; }
		}

		private string _ObjectIdColumn;

		/// <summary>
		/// Name of column that contains the Object ID
		/// </summary>
		public string ObjectIdColumn
		{
			get { return _ObjectIdColumn; }
			set { _ObjectIdColumn = value; }
		}
	

		/// <summary>
		/// Returns geometries within the specified bounding box
		/// </summary>
		/// <param name="bbox"></param>
		/// <returns></returns>
		public Collection<Geometries.Geometry> GetGeometriesInView(SharpMap.Geometries.BoundingBox bbox)
		{
            Collection<Geometries.Geometry> features = new Collection<SharpMap.Geometries.Geometry>();
			using (OracleConnection conn = new OracleConnection(_ConnectionString))
			{
                //Get bounding box string
                string strBbox = GetBoxFilterStr(bbox);

				//string strSQL = "SELECT AsBinary(" + this.GeometryColumn + ") AS Geom ";
				string strSQL = "SELECT g." + this.GeometryColumn +".Get_WKB() ";
				strSQL += " FROM " + this.Table + " g WHERE ";

				if (!String.IsNullOrEmpty(_defintionQuery))
					strSQL += this.DefinitionQuery + " AND ";

				strSQL += strBbox;

				using (OracleCommand command = new OracleCommand(strSQL, conn))
				{
					conn.Open();
					using (OracleDataReader dr = command.ExecuteReader())
					{						
						while (dr.Read())
						{
							if (dr[0] != DBNull.Value)
							{
								SharpMap.Geometries.Geometry geom = SharpMap.Converters.WellKnownBinary.GeometryFromWKB.Parse((byte[])dr[0]);                               
                                if(geom!=null)
									features.Add(geom);								
							}
						}				
					}
					conn.Close();
				}
			}
			return features;
		}

		/// <summary>
		/// Returns the geometry corresponding to the Object ID
		/// </summary>
		/// <param name="oid">Object ID</param>
		/// <returns>geometry</returns>
		public SharpMap.Geometries.Geometry GetGeometryByID(uint oid)
		{
			SharpMap.Geometries.Geometry geom = null;
			using (OracleConnection conn = new OracleConnection(_ConnectionString))
			{
                string strSQL = "SELECT g." + this.GeometryColumn + ".Get_WKB() FROM " + this.Table + " g WHERE " + this.ObjectIdColumn + "='" + oid.ToString() + "'";
				conn.Open();
				using (OracleCommand command = new OracleCommand(strSQL, conn))
				{
					using (OracleDataReader dr = command.ExecuteReader())
					{
						while (dr.Read())
						{
							if (dr[0] != DBNull.Value)
								geom = SharpMap.Converters.WellKnownBinary.GeometryFromWKB.Parse((byte[])dr[0]);
						}
					}
				}
				conn.Close();
			}
			return geom;
		}
		/// <summary>
		/// Returns geometry Object IDs whose bounding box intersects 'bbox'
		/// </summary>
		/// <param name="bbox"></param>
		/// <returns></returns>
		public Collection<uint> GetObjectIDsInView(SharpMap.Geometries.BoundingBox bbox)
		{
			Collection<uint> objectlist = new Collection<uint>();
			using (OracleConnection conn = new OracleConnection(_ConnectionString))
			{

                //Get bounding box string
                string strBbox = GetBoxFilterStr(bbox);

				string strSQL = "SELECT g." + this.ObjectIdColumn + " ";
				strSQL += "FROM " + this.Table + " g WHERE ";

				if (!String.IsNullOrEmpty(_defintionQuery))
					strSQL += this.DefinitionQuery + " AND ";

				strSQL += strBbox;                

				using (OracleCommand command = new OracleCommand(strSQL, conn))
				{
					conn.Open();
					using (OracleDataReader dr = command.ExecuteReader())
					{
						while (dr.Read())
						{
							if (dr[0] != DBNull.Value)
							{
                                uint ID = (uint)(decimal)dr[0];
								objectlist.Add(ID);
							}
						}
					}
					conn.Close();
				}
			}
			return objectlist;
		}

        /// <summary>
        /// Returns the box filter string needed in SQL query
        /// </summary>
        /// <param name="bbox"></param>
        /// <returns></returns>
        private string GetBoxFilterStr(SharpMap.Geometries.BoundingBox bbox) {
            string strBbox = "SDO_FILTER(g." + this.GeometryColumn + ", mdsys.sdo_geometry(2003,#SRID#,NULL," +
                                   "mdsys.sdo_elem_info_array(1,1003,3)," +
                                   "mdsys.sdo_ordinate_array(" +
                                   bbox.Min.X.ToString(SharpMap.Map.numberFormat_EnUS) + ", " +
                                   bbox.Min.Y.ToString(SharpMap.Map.numberFormat_EnUS) + ", " +
                                   bbox.Max.X.ToString(SharpMap.Map.numberFormat_EnUS) + ", " +
                                   bbox.Max.Y.ToString(SharpMap.Map.numberFormat_EnUS) + ")), " +
                                   "'querytype=window') = 'TRUE'";

            if (this.SRID > 0) {
                strBbox = strBbox.Replace("#SRID#", this.SRID.ToString(Map.numberFormat_EnUS));
            } else {
                strBbox = strBbox.Replace("#SRID#", "NULL");
            }
            return strBbox;
        }

		/// <summary>
		/// Returns all objects within a distance of a geometry
		/// </summary>
		/// <param name="geom"></param>
		/// <param name="distance"></param>
		/// <returns></returns>
		[Obsolete("Use ExecuteIntersectionQuery instead")]
		public SharpMap.Data.FeatureDataTable QueryFeatures(SharpMap.Geometries.Geometry geom, double distance)
		{

            //List<Geometries.Geometry> features = new List<SharpMap.Geometries.Geometry>();
			using (OracleConnection conn = new OracleConnection(_ConnectionString))
			{
				string strGeom = "MDSYS.SDO_GEOMETRY('" + geom.AsText() + "', #SRID#)";

                if (this.SRID > 0) {
                    strGeom = strGeom.Replace("#SRID#", this.SRID.ToString(Map.numberFormat_EnUS));
                } else {
                    strGeom = strGeom.Replace("#SRID#", "NULL");
                }
                
                strGeom = "SDO_WITHIN_DISTANCE(g." + this.GeometryColumn + ", " + strGeom + ", 'distance = " + distance.ToString(Map.numberFormat_EnUS) + "') = 'TRUE'";

                string strSQL = "SELECT g.* , g." + this.GeometryColumn + ").Get_WKB() As sharpmap_tempgeometry FROM " + this.Table + " g WHERE ";

				if (!String.IsNullOrEmpty(_defintionQuery))
					strSQL += this.DefinitionQuery + " AND ";

                strSQL += strGeom;

				using (OracleDataAdapter adapter = new OracleDataAdapter(strSQL, conn))
				{
					System.Data.DataSet ds = new System.Data.DataSet();
					conn.Open();
					adapter.Fill(ds);
					conn.Close();
					if (ds.Tables.Count > 0)
					{
						FeatureDataTable fdt = new FeatureDataTable(ds.Tables[0]);
						foreach (System.Data.DataColumn col in ds.Tables[0].Columns)
							if (col.ColumnName != this.GeometryColumn && col.ColumnName != "sharpmap_tempgeometry")
								fdt.Columns.Add(col.ColumnName,col.DataType,col.Expression);
						foreach (System.Data.DataRow dr in ds.Tables[0].Rows)

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
在线免费观看不卡av| 婷婷综合五月天| 亚洲一区二区三区激情| 日韩影院在线观看| 色综合欧美在线视频区| 国产亚洲精品超碰| 日韩福利视频导航| 欧美丝袜自拍制服另类| 国产精品天天看| 国产毛片精品视频| 欧美成人vr18sexvr| 亚洲 欧美综合在线网络| av网站免费线看精品| 久久精品无码一区二区三区| 人人爽香蕉精品| 91久久国产综合久久| 国产精品第13页| 国产精品99精品久久免费| 欧美不卡视频一区| 免费欧美日韩国产三级电影| 欧美三级韩国三级日本三斤| 91超碰这里只有精品国产| 日韩精品电影在线| 精品剧情在线观看| 日韩制服丝袜av| 91精品婷婷国产综合久久竹菊| 一区二区三区四区激情| 色综合色狠狠天天综合色| 亚洲欧美日韩综合aⅴ视频| 成人一区二区在线观看| 亚洲国产精品成人综合| 成人免费高清视频| 亚洲图片你懂的| 91成人在线观看喷潮| 亚洲一二三区视频在线观看| 欧美性一级生活| 日韩av网站在线观看| 欧美电视剧在线观看完整版| 精品午夜久久福利影院| 国产性天天综合网| 成人性色生活片| 亚洲乱码日产精品bd| 欧美亚一区二区| 久久成人18免费观看| 精品国产1区二区| 国产成人精品影视| 亚洲人成人一区二区在线观看| 91精品国产黑色紧身裤美女| 亚洲一区二区黄色| 亚洲aaa精品| 亚洲va韩国va欧美va精品| 欧美美女bb生活片| 美国一区二区三区在线播放| 国产亚洲一区二区三区四区| 9色porny自拍视频一区二区| 亚洲国产成人porn| 欧美va亚洲va在线观看蝴蝶网| 丁香桃色午夜亚洲一区二区三区| 国产精品久久久久久久久免费丝袜 | 91美女片黄在线观看| 亚洲成在人线在线播放| 久久综合色之久久综合| 成人丝袜视频网| 亚洲bt欧美bt精品| 久久九九全国免费| 欧美午夜精品久久久久久孕妇| 看电影不卡的网站| 亚洲人成亚洲人成在线观看图片| 欧美日韩大陆在线| 国产成人啪免费观看软件| 亚洲视频网在线直播| 欧美一区二区三区四区在线观看 | 热久久免费视频| 中文字幕欧美三区| 欧美日本视频在线| 成人精品鲁一区一区二区| 天天综合色天天综合色h| 久久精品日韩一区二区三区| 欧美亚洲综合另类| 成人美女在线视频| 久久精品国产99久久6| 亚洲嫩草精品久久| 国产女同性恋一区二区| 欧美一级理论片| 91福利资源站| 成人黄色网址在线观看| 九九**精品视频免费播放| 亚洲最大成人网4388xx| 中文字幕+乱码+中文字幕一区| 欧美高清视频不卡网| 99精品视频中文字幕| 极品瑜伽女神91| 美腿丝袜亚洲色图| 日本欧美一区二区三区乱码| 玉足女爽爽91| 亚洲免费在线观看视频| 国产精品视频你懂的| 久久亚洲二区三区| 日韩美女天天操| 69av一区二区三区| 欧美日本一区二区三区| 在线视频一区二区三| 91在线观看成人| 不卡的av网站| 成人天堂资源www在线| 国产suv精品一区二区三区| 日韩成人精品在线| 亚洲人快播电影网| 麻豆成人综合网| 91玉足脚交白嫩脚丫在线播放| 成人激情校园春色| 色综合天天在线| 国产亚洲人成网站| 日韩午夜小视频| 日韩一区二区三区视频| 91精品黄色片免费大全| 欧美丰满一区二区免费视频 | 一区二区日韩av| 亚洲精品国产视频| 玉足女爽爽91| 亚洲成人tv网| 蜜臀国产一区二区三区在线播放| 免费观看在线色综合| 精品一区二区影视| 成人免费福利片| 91丨九色丨蝌蚪丨老版| 在线观看免费成人| 欧美一级夜夜爽| 成熟亚洲日本毛茸茸凸凹| 亚洲国产成人私人影院tom | 老司机精品视频一区二区三区| 免费高清在线一区| 国产麻豆精品在线观看| www.激情成人| 欧洲一区二区av| 91麻豆精品国产91久久久久久 | 91麻豆精品国产91久久久久| 精品国产免费久久| 一区视频在线播放| 日本成人超碰在线观看| 国产在线精品免费| 色妹子一区二区| 日韩三级在线观看| 亚洲同性gay激情无套| 午夜免费欧美电影| 国产高清不卡二三区| 色又黄又爽网站www久久| 日韩欧美区一区二| 国产精品乱人伦| 亚洲午夜久久久久久久久久久| 麻豆91在线观看| 色婷婷亚洲综合| 欧美精品一区二区久久久| 亚洲视频一区在线观看| 乱中年女人伦av一区二区| 成人黄色小视频在线观看| 欧美日本一区二区在线观看| 久久精品一区四区| 婷婷综合另类小说色区| 不卡的电影网站| 欧美一区二区三区四区久久| 最新欧美精品一区二区三区| 麻豆91精品91久久久的内涵| 91麻豆免费看片| 久久久精品影视| 首页国产丝袜综合| 一本色道**综合亚洲精品蜜桃冫| 久久尤物电影视频在线观看| 午夜精品久久久久久久久久| 成人白浆超碰人人人人| 精品处破学生在线二十三| 亚洲在线视频网站| 成人va在线观看| 久久久久久久久久看片| 日本亚洲一区二区| 欧美日韩综合不卡| 亚洲天堂网中文字| 成人免费av资源| 久久久午夜精品理论片中文字幕| 日本成人在线电影网| 欧美三级日韩三级| 亚洲乱码国产乱码精品精的特点 | 国产欧美精品一区二区色综合| 美日韩黄色大片| 91精品国产日韩91久久久久久| 一区二区三区四区激情| av中文字幕在线不卡| 欧美国产精品专区| 国产高清成人在线| 久久久久国产精品麻豆ai换脸| 青椒成人免费视频| 5月丁香婷婷综合| 亚洲福利视频一区| 欧美三级电影在线看| 亚洲小说春色综合另类电影| 欧美午夜在线观看| 性做久久久久久免费观看欧美| 欧美日韩一级片在线观看| 亚洲国产成人tv| 在线91免费看|