c#访问sybase数据库源码

之前接触sybase还是在2年前,当时为了访问sybase数据库是通过安装客户端、建数据源的方法实现的,何其艰难,前段时间又一次来到了sybase的面前,这次从sybase网站下载到了c#下面的访问类库Sybase.Data.AseClient,直接引用就可以轻松的使用它所提供的一系列类和方法,和Oledb及sqlserver何其相似,不记得在那里看到过,说sqlserver就是来自于sybase卖给微软的数据库核心代码?难怪用起来很熟悉。

附封装了的数据库访问类源码,借鉴的PetShop来的。

using System;
using System.Configuration;
using System.Data;
using Sybase.Data.AseClient;

namespace FoodBook
{
   public class SybaseHelper
    {
       public static readonly string ConnectionString = ConfigurationManager.ConnectionStrings["SybaseConnString"].ConnectionString;

       public SybaseHelper()
       {
       }
        
        /// <summary>
       /// 利用传入参数执行指定的查询语句并返回一个AseDataReader数据集
        /// </summary>
        /// <param name="strSql"></param>
        /// <param name="OraclePara"></param>
        /// <returns></returns>
       public static AseDataReader ExecuteReader(string strSql, AseParameter[] AsePara)
        {
            AseConnection AseConn = new AseConnection(ConnectionString);
            AseCommand AseComm = new AseCommand();
            try
            {
                SetCommand(AseComm, AseConn, strSql, AsePara);
                AseDataReader dr = AseComm.ExecuteReader(CommandBehavior.CloseConnection);
                AseComm.Parameters.Clear();
                return dr;
            }
            catch
            {
                AseConn.Close();
                throw;
            }
        }

       /// <summary>
       /// 返回一个DataSet对象
       /// </summary>
       /// <param name="strSql"></param>
       /// <param name="OleDbPara"></param>
       /// <param name="tableName">表名称</param>
       /// <returns>DataSet</returns>
       public static DataSet ReturnDataSet(string strSql, AseParameter[] AsePara, string tableName)
       {
           DataSet dataSet = new DataSet(tableName);
           AseDataAdapter Adapter = new AseDataAdapter();
           AseConnection AseConn = new AseConnection(ConnectionString);
           AseCommand AseComm = new AseCommand();
           try
           {
               SetCommand(AseComm, AseConn, strSql, AsePara);
               Adapter.SelectCommand = AseComm;
               Adapter.Fill(dataSet, tableName);
               AseComm.Parameters.Clear();
               AseConn.Close();
               return dataSet;
           }
           catch
           {
               AseConn.Close();
               throw;
           }
       }

       /// <summary>
       /// 利用传入参数执行指定的语句并返回受影响的行数
       /// </summary>
       /// <param name="strSql"></param>
       /// <param name="OraclePara"></param>
       /// <returns>数字类型,受影响的行数</returns>
       public static int ExecuteNonQuery(string strSql, AseParameter[] AsePara)
       {
           AseCommand AseComm = new AseCommand();
           using (AseConnection AseConn = new AseConnection(ConnectionString))
           {
               SetCommand(AseComm, AseConn, strSql, AsePara);
               int val = AseComm.ExecuteNonQuery();
               AseComm.Parameters.Clear();
               AseConn.Dispose();
               AseConn.Close();
               return val;
           }
       }

       /// <summary>
       /// 利用传入参数执行执行查询并返回第一行第一列的值
       /// </summary>
       /// <param name="strSql"></param>
       /// <param name="OraclePara"></param>
       /// <returns>object,第一行第一列的值</returns>
       public static object ExecuteScalar(string strSql, AseParameter[] AsePara)
       {
           AseCommand AseComm = new AseCommand();
           using (AseConnection AseConn = new AseConnection(ConnectionString))
           {
               SetCommand(AseComm, AseConn, strSql, AsePara);
               object val = AseComm.ExecuteScalar();
               AseComm.Parameters.Clear();
               return val;
           }
       }

       /// <summary>
       /// 添加AseParameter参数到AseCommand对象
       /// </summary>
       /// <param name="AseComm"></param>
       /// <param name="AseConn"></param>
       /// <param name="strSql"></param>
       /// <param name="AsePara"></param>
       private static void SetCommand(AseCommand AseComm, AseConnection AseConn, string strSql, AseParameter[] AsePara)
       {
           if (AseConn.State != ConnectionState.Open)
               AseConn.Open();
           AseComm.Connection = AseConn;
           AseComm.CommandText = strSql;
           if (AsePara != null)
           {
               foreach (AseParameter Para in AsePara)
                   AseComm.Parameters.Add(Para);
           }
       }

    }
}
 

原创文章,版权为M1580所有,欢迎转摘,转摘请附带以上出处。谢谢!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值