yueyue, I have fallen in love with you for

2011-02-09, 01:18:25 PM

常用数据库操作类SQLhelp的写法

Posted on 2011-08-15 00:05  张超的博客  阅读(479)  评论(0)    收藏  举报

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Configuration;
using System.Data;
using System.Data.SqlClient;

namespace RuPengSite.DataTier
{
    public static class SqlHelper
    {
        public static string ConnStr
        {
            get
            {
                return ConfigurationManager.ConnectionStrings["CMSConnectionString"].ConnectionString;
            }
        }

        public static IDbDataParameter CreateParameter(string name, object value)
        {
            return new SqlParameter(name, value);
        }

        public static int ExecuteNonQuery(string sql, params IDbDataParameter[] parameters)
        {
            using (IDbConnection conn = new SqlConnection(ConnStr))
            {
                conn.Open();
                using (IDbCommand cmd = conn.CreateCommand())
                {
                    cmd.CommandText = sql;
                    foreach (var parameter in parameters)
                    {
                        cmd.Parameters.Add(parameter);
                    }
                    return cmd.ExecuteNonQuery();
                }
            }
        }

        public static T ExecuteScalar<T>(string sql, params IDbDataParameter[] parameters)
        {
            using (IDbConnection conn = new SqlConnection(ConnStr))
            {
                conn.Open();
                using (IDbCommand cmd = conn.CreateCommand())
                {
                    cmd.CommandText = sql;
                    foreach (var parameter in parameters)
                    {
                        cmd.Parameters.Add(parameter);
                    }
                    return (T)cmd.ExecuteScalar();
                }
            }
        }

        /// <summary>
        /// 执行一个返回标量的sql语句,如果有缓存则直接从缓存中读取
        /// </summary>
        /// <typeparam name="T">标量类型</typeparam>
        /// <param name="cacheKey">缓存唯一标识</param>
        /// <param name="absoluteExpiration">缓存过期时间</param>
        /// <param name="sql">要执行的sql语句</param>
        /// <param name="parameters">sql参数</param>
        /// <returns></returns>
        public static T CacheExecuteScalar<T>(string cacheKey, DateTime absoluteExpiration, string sql, params IDbDataParameter[] parameters)
        {
            object obj = HttpRuntime.Cache[cacheKey];
            if (obj != null)
            {
                return (T)obj;
            }
            T value = ExecuteScalar<T>(sql, parameters);
            HttpRuntime.Cache.Insert(cacheKey, value, null, absoluteExpiration, TimeSpan.Zero);
            return value;
        }

        /// <summary>
        /// 执行一个返回DataTable的sql语句,如果有缓存则直接从缓存中读取
        /// </summary>
        /// <param name="cacheKey">缓存唯一标识</param>
        /// <param name="absoluteExpiration">缓存过期时间</param>
        /// <param name="sql">要执行的sql语句</param>
        /// <param name="parameters">sql参数</param>
        /// <returns></returns>
        public static DataTable CacheExecuteDataSet(string cacheKey, DateTime absoluteExpiration, string sql, params IDbDataParameter[] parameters)
        {
            object obj = HttpRuntime.Cache[cacheKey];
            if (obj != null)
            {
                return (DataTable)obj;
            }
            DataTable value = ExecuteDataSet(sql, parameters);
            HttpRuntime.Cache.Insert(cacheKey, value, null, absoluteExpiration, TimeSpan.Zero);
            return value;
        }

        public static DataTable ExecuteDataSet(string sql, params IDbDataParameter[] parameters)
        {
            using (IDbConnection conn = new SqlConnection(ConnStr))
            {
                conn.Open();
                using (IDbCommand cmd = conn.CreateCommand())
                {
                    cmd.CommandText = sql;
                    foreach (var parameter in parameters)
                    {
                        cmd.Parameters.Add(parameter);
                    }
                    DataSet ds = new DataSet();
                    SqlDataAdapter adapter = new SqlDataAdapter((SqlCommand)cmd);
                    adapter.Fill(ds);
                    return ds.Tables[0];
                }
            }
        }
    }
}

博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3