AcessHelper类

  1  using  System;
  2  using  System.Data;
  3  using  System.Configuration;
  4  using  System.Data.OleDb;
  5  using  System.Collections;
  6 
  7  namespace  MobileHealth
  8  {
  9       ///   <summary>
 10       ///  AcceHelper 的摘要说明
 11       ///   </summary>
 12       public   static   class  AccessHelper
 13      {
 14           // 数据库连接字符串
 15           public   static   readonly   string  conn  =  System.Configuration.ConfigurationManager.ConnectionStrings[ " ConnectionString " ].ConnectionString;
 16           //  用于缓存参数的HASH表
 17           private   static  Hashtable parmCache  =  Hashtable.Synchronized( new  Hashtable());
 18           ///   <summary>
 19           ///   给定连接的数据库用假设参数执行一个sql命令(不返回数据集)
 20           ///   </summary>
 21           ///   <param name="connectionString"> 一个有效的连接字符串 </param>
 22           ///   <param name="commandText"> 存储过程名称或者sql命令语句 </param>
 23           ///   <param name="commandParameters"> 执行命令所用参数的集合 </param>
 24           ///   <returns> 执行命令所影响的行数 </returns>
 25           public   static   int  ExecuteNonQuery( string  connectionString,  string  cmdText,  params  OleDbParameter[] commandParameters)
 26          {
 27              OleDbCommand cmd  =   new  OleDbCommand();
 28               using  (OleDbConnection conn  =   new  OleDbConnection(connectionString))
 29              {
 30                  PrepareCommand(cmd, conn,  null , cmdText, commandParameters);
 31                   int  val  =  cmd.ExecuteNonQuery();
 32                  cmd.Parameters.Clear();
 33                   return  val;
 34              }
 35          }
 36           ///   <summary>
 37           ///  用现有的数据库连接执行一个sql命令(不返回数据集)
 38           ///   </summary>
 39           ///   <remarks>
 40           /// 举例:  
 41           ///   int result = ExecuteNonQuery(connString, "PublishOrders", new OleDbParameter("@prodid", 24));
 42           ///   </remarks>
 43           ///   <param name="conn"> 一个现有的数据库连接 </param>
 44           ///   <param name="commandText"> 存储过程名称或者sql命令语句 </param>
 45           ///   <param name="commandParameters"> 执行命令所用参数的集合 </param>
 46           ///   <returns> 执行命令所影响的行数 </returns>
 47           public   static   int  ExecuteNonQuery(OleDbConnection connection,  string  cmdText,  params  OleDbParameter[] commandParameters)
 48          {
 49              OleDbCommand cmd  =   new  OleDbCommand();
 50              PrepareCommand(cmd, connection,  null , cmdText, commandParameters);
 51               int  val  =  cmd.ExecuteNonQuery();
 52              cmd.Parameters.Clear();
 53               return  val;
 54          }
 55           ///   <summary>
 56           /// 使用现有的SQL事务执行一个sql命令(不返回数据集)
 57           ///   </summary>
 58           ///   <remarks>
 59           /// 举例:  
 60           ///   int result = ExecuteNonQuery(trans, "PublishOrders", new OleDbParameter("@prodid", 24));
 61           ///   </remarks>
 62           ///   <param name="trans"> 一个现有的事务 </param>
 63           ///   <param name="commandText"> 存储过程名称或者sql命令语句 </param>
 64           ///   <param name="commandParameters"> 执行命令所用参数的集合 </param>
 65           ///   <returns> 执行命令所影响的行数 </returns>
 66           public   static   int  ExecuteNonQuery(OleDbTransaction trans,  string  cmdText,  params  OleDbParameter[] commandParameters)
 67          {
 68              OleDbCommand cmd  =   new  OleDbCommand();
 69              PrepareCommand(cmd, trans.Connection, trans, cmdText, commandParameters);
 70               int  val  =  cmd.ExecuteNonQuery();
 71              cmd.Parameters.Clear();
 72               return  val;
 73          }
 74           ///   <summary>
 75           ///  用执行的数据库连接执行一个返回数据集的sql命令
 76           ///   </summary>
 77           ///   <remarks>
 78           ///  举例:  
 79           ///   OleDbDataReader r = ExecuteReader(connString, "PublishOrders", new OleDbParameter("@prodid", 24));
 80           ///   </remarks>
 81           ///   <param name="connectionString"> 一个有效的连接字符串 </param>
 82           ///   <param name="commandText"> 存储过程名称或者sql命令语句 </param>
 83           ///   <param name="commandParameters"> 执行命令所用参数的集合 </param>
 84           ///   <returns> 包含结果的读取器 </returns>
 85           public   static  OleDbDataReader ExecuteReader( string  connectionString,  string  cmdText,  params  OleDbParameter[] commandParameters)
 86          {
 87               // 创建一个SqlCommand对象
 88              OleDbCommand cmd  =   new  OleDbCommand();
 89               // 创建一个SqlConnection对象
 90              OleDbConnection conn  =   new  OleDbConnection(connectionString);
 91               // 在这里我们用一个try/catch结构执行sql文本命令/存储过程,因为如果这个方法产生一个异常我们要关闭连接,因为没有读取器存在,
 92               // 因此commandBehaviour.CloseConnection 就不会执行
 93               try
 94              {
 95                   // 调用 PrepareCommand 方法,对 SqlCommand 对象设置参数
 96                  PrepareCommand(cmd, conn,  null , cmdText, commandParameters);
 97                   // 调用 SqlCommand  的 ExecuteReader 方法
 98                  OleDbDataReader reader  =  cmd.ExecuteReader(CommandBehavior.CloseConnection);
 99                   // 清除参数
100                  cmd.Parameters.Clear();
101                   return  reader;
102              }
103               catch
104              {
105                   // 关闭连接,抛出异常
106                  conn.Close();
107                   throw ;
108              }
109          }
110           ///   <summary>
111           ///  返回一个DataSet数据集
112           ///   </summary>
113           ///   <param name="connectionString"> 一个有效的连接字符串 </param>
114           ///   <param name="cmdText"> 存储过程名称或者sql命令语句 </param>
115           ///   <param name="commandParameters"> 执行命令所用参数的集合 </param>
116           ///   <returns> 包含结果的数据集 </returns>
117           public   static  DataSet ExecuteDataSet( string  connectionString,  string  cmdText,  params  OleDbParameter[] commandParameters)
118          {
119               // 创建一个SqlCommand对象,并对其进行初始化
120              OleDbCommand cmd  =   new  OleDbCommand();
121               using  (OleDbConnection conn  =   new  OleDbConnection(connectionString))
122              {
123                  PrepareCommand(cmd, conn,  null , cmdText, commandParameters);
124                   // 创建SqlDataAdapter对象以及DataSet
125                  OleDbDataAdapter da  =   new  OleDbDataAdapter(cmd);
126                  DataSet ds  =   new  DataSet();
127                   try
128                  {
129                       // 填充ds
130                      da.Fill(ds);
131                       //  清除cmd的参数集合 
132                      cmd.Parameters.Clear();
133                       // 返回ds
134                       return  ds;
135                  }
136                   catch
137                  {
138                       // 关闭连接,抛出异常
139                      conn.Close();
140                       throw ;
141                  }
142              }
143          }
144           ///   <summary>
145           ///  用指定的数据库连接字符串执行一个命令并返回一个数据集的第一列
146           ///   </summary>
147           ///   <remarks>
148           /// 例如:  
149           ///   Object obj = ExecuteScalar(connString, "PublishOrders", new OleDbParameter("@prodid", 24));
150           ///   </remarks>
151           /// <param name="connectionString"> 一个有效的连接字符串 </param>
152           ///   <param name="commandText"> 存储过程名称或者sql命令语句 </param>
153           ///   <param name="commandParameters"> 执行命令所用参数的集合 </param>
154           ///   <returns> 用 Convert.To{Type}把类型转换为想要的  </returns>
155           public   static   object  ExecuteScalar( string  connectionString,  string  cmdText,  params  OleDbParameter[] commandParameters)
156          {
157              OleDbCommand cmd  =   new  OleDbCommand();
158               using  (OleDbConnection connection  =   new  OleDbConnection(connectionString))
159              {
160                  PrepareCommand(cmd, connection,  null , cmdText, commandParameters);
161                   object  val  =  cmd.ExecuteScalar();
162                  cmd.Parameters.Clear();
163                   return  val;
164              }
165          }
166           ///   <summary>
167           ///  用指定的数据库连接执行一个命令并返回一个数据集的第一列
168           ///   </summary>
169           ///   <remarks>
170           ///  例如:  
171           ///   Object obj = ExecuteScalar(connString, "PublishOrders", new OleDbParameter("@prodid", 24));
172           ///   </remarks>
173           ///   <param name="conn"> 一个存在的数据库连接 </param>
174           ///   <param name="commandText"> 存储过程名称或者sql命令语句 </param>
175           ///   <param name="commandParameters"> 执行命令所用参数的集合 </param>
176           ///   <returns> 用 Convert.To{Type}把类型转换为想要的  </returns>
177           public   static   object  ExecuteScalar(OleDbConnection connection,  string  cmdText,  params  OleDbParameter[] commandParameters)
178          {
179              OleDbCommand cmd  =   new  OleDbCommand();
180              PrepareCommand(cmd, connection,  null , cmdText, commandParameters);
181               object  val  =  cmd.ExecuteScalar();
182              cmd.Parameters.Clear();
183               return  val;
184          }
185           ///   <summary>
186           ///  将参数集合添加到缓存
187           ///   </summary>
188           ///   <param name="cacheKey"> 添加到缓存的变量 </param>
189           ///   <param name="cmdParms"> 一个将要添加到缓存的sql参数集合 </param>
190           public   static   void  CacheParameters( string  cacheKey,  params  OleDbParameter[] commandParameters)
191          {
192              parmCache[cacheKey]  =  commandParameters;
193          }
194           ///   <summary>
195           ///  找回缓存参数集合
196           ///   </summary>
197           ///   <param name="cacheKey"> 用于找回参数的关键字 </param>
198           ///   <returns> 缓存的参数集合 </returns>
199           public   static  OleDbParameter[] GetCachedParameters( string  cacheKey)
200          {
201              OleDbParameter[] cachedParms  =  (OleDbParameter[])parmCache[cacheKey];
202               if  (cachedParms  ==   null )
203                   return   null ;
204              OleDbParameter[] clonedParms  =   new  OleDbParameter[cachedParms.Length];
205               for  ( int  i  =   0 , j  =  cachedParms.Length; i  <  j; i ++ )
206                  clonedParms  =  (OleDbParameter[])((ICloneable)cachedParms).Clone();
207               return  clonedParms;
208          }
209           ///   <summary>
210           ///  准备执行一个命令
211           ///   </summary>
212           ///   <param name="cmd"> sql命令 </param>
213           ///   <param name="conn"> Sql连接 </param>
214           ///   <param name="trans"> Sql事务 </param>
215           ///   <param name="cmdText"> 命令文本,例如:Select * from Products </param>
216           ///   <param name="cmdParms"> 执行命令的参数 </param>
217           private   static   void  PrepareCommand(OleDbCommand cmd, OleDbConnection conn, OleDbTransaction trans,  string  cmdText, OleDbParameter[] cmdParms)
218          {
219               // 判断连接的状态。如果是关闭状态,则打开
220               if  (conn.State  !=  ConnectionState.Open)
221                  conn.Open();
222               // cmd属性赋值
223              cmd.Connection  =  conn;
224              cmd.CommandText  =  cmdText;
225               // 是否需要用到事务处理
226               if  (trans  !=   null )
227                  cmd.Transaction  =  trans;
228              cmd.CommandType  =  CommandType.Text;
229               // 添加cmd需要的存储过程参数
230               if  (cmdParms  !=   null )
231              {
232                   foreach  (OleDbParameter parm  in  cmdParms)
233                      cmd.Parameters.Add(parm);
234              }
235          }
236      }
237  }
238 

转载于:https://www.cnblogs.com/flychaochao/archive/2009/07/17/1525639.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SQLAlchemy 是一个 SQL 工具包和对象关系映射(ORM)库,用于 Python 编程语言。它提供了一个高级的 SQL 工具和对象关系映射工具,允许开发者以 Python 和对象的形式操作数据库,而无需编写大量的 SQL 语句。SQLAlchemy 建立在 DBAPI 之上,支持多种数据库后端,如 SQLite, MySQL, PostgreSQL 等。 SQLAlchemy 的核心功能: 对象关系映射(ORM): SQLAlchemy 允许开发者使用 Python 来表示数据库表,使用的实例表示表中的行。 开发者可以定义之间的关系(如一对多、多对多),SQLAlchemy 会自动处理这些关系在数据库中的映射。 通过 ORM,开发者可以像操作 Python 对象一样操作数据库,这大大简化了数据库操作的复杂性。 表达式语言: SQLAlchemy 提供了一个丰富的 SQL 表达式语言,允许开发者以 Python 表达式的方式编写复杂的 SQL 查询。 表达式语言提供了对 SQL 语句的灵活控制,同时保持了代码的可读性和可维护性。 数据库引擎和连接池: SQLAlchemy 支持多种数据库后端,并且为每种后端提供了对应的数据库引擎。 它还提供了连接池管理功能,以优化数据库连接的创建、使用和释放。 会话管理: SQLAlchemy 使用会话(Session)来管理对象的持久化状态。 会话提供了一个工作单元(unit of work)和身份映射(identity map)的概念,使得对象的状态管理和查询更加高效。 事件系统: SQLAlchemy 提供了一个事件系统,允许开发者在 ORM 的各个生命周期阶段插入自定义的钩子函数。 这使得开发者可以在对象加载、修改、删除等操作时执行额外的逻辑。
SQLAlchemy 是一个 SQL 工具包和对象关系映射(ORM)库,用于 Python 编程语言。它提供了一个高级的 SQL 工具和对象关系映射工具,允许开发者以 Python 和对象的形式操作数据库,而无需编写大量的 SQL 语句。SQLAlchemy 建立在 DBAPI 之上,支持多种数据库后端,如 SQLite, MySQL, PostgreSQL 等。 SQLAlchemy 的核心功能: 对象关系映射(ORM): SQLAlchemy 允许开发者使用 Python 来表示数据库表,使用的实例表示表中的行。 开发者可以定义之间的关系(如一对多、多对多),SQLAlchemy 会自动处理这些关系在数据库中的映射。 通过 ORM,开发者可以像操作 Python 对象一样操作数据库,这大大简化了数据库操作的复杂性。 表达式语言: SQLAlchemy 提供了一个丰富的 SQL 表达式语言,允许开发者以 Python 表达式的方式编写复杂的 SQL 查询。 表达式语言提供了对 SQL 语句的灵活控制,同时保持了代码的可读性和可维护性。 数据库引擎和连接池: SQLAlchemy 支持多种数据库后端,并且为每种后端提供了对应的数据库引擎。 它还提供了连接池管理功能,以优化数据库连接的创建、使用和释放。 会话管理: SQLAlchemy 使用会话(Session)来管理对象的持久化状态。 会话提供了一个工作单元(unit of work)和身份映射(identity map)的概念,使得对象的状态管理和查询更加高效。 事件系统: SQLAlchemy 提供了一个事件系统,允许开发者在 ORM 的各个生命周期阶段插入自定义的钩子函数。 这使得开发者可以在对象加载、修改、删除等操作时执行额外的逻辑。
GeoPandas是一个开源的Python库,旨在简化地理空间数据的处理和分析。它结合了Pandas和Shapely的能力,为Python用户提供了一个强大而灵活的工具来处理地理空间数据。以下是关于GeoPandas的详细介绍: 一、GeoPandas的基本概念 1. 定义 GeoPandas是建立在Pandas和Shapely之上的一个Python库,用于处理和分析地理空间数据。 它扩展了Pandas的DataFrame和Series数据结构,允许在其中存储和操作地理空间几何图形。 2. 核心数据结构 GeoDataFrame:GeoPandas的核心数据结构,是Pandas DataFrame的扩展。它包含一个或多个列,其中至少一列是几何列(geometry column),用于存储地理空间几何图形(如点、线、多边形等)。 GeoSeries:GeoPandas中的另一个重要数据结构,似于Pandas的Series,但用于存储几何图形序列。 二、GeoPandas的功能特性 1. 读取和写入多种地理空间数据格式 GeoPandas支持读取和写入多种常见的地理空间数据格式,包括Shapefile、GeoJSON、PostGIS、KML等。这使得用户可以轻松地从各种数据源中加载地理空间数据,并将处理后的数据保存为所需的格式。 2. 地理空间几何图形的创建、编辑和分析 GeoPandas允许用户创建、编辑和分析地理空间几何图形,包括点、线、多边形等。它提供了丰富的空间操作函数,如缓冲区分析、交集、并集、差集等,使得用户可以方便地进行地理空间数据分析。 3. 数据可视化 GeoPandas内置了数据可视化功能,可以绘制地理空间数据的地图。用户可以使用matplotlib等库来进一步定制地图的样式和布局。 4. 空间连接和空间索引 GeoPandas支持空间连接操作,可以将两个GeoDataFrame按照空间关系(如相交、包含等)进行连接。此外,它还支持空间索引,可以提高地理空间数据查询的效率。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值