众里寻他千百度,蓦然回首,那人却在灯火阑珊处

原创 2006年05月24日 12:31:00

好在找到了一个库作三层架构的;众里寻他千百度,蓦然回首,那人却在灯火阑珊处

要作就要作企业级的系统,要学就学好的范例;

微软的petshop的架构;

看来我要好好学习啊,等着天天向上啊!//===============================================================================
// This file is based on the Microsoft Data Access Application Block for .NET

//=============================================================================== 

using System;
using System.Configuration;
using System.Data;
using System.Data.SqlClient;
using System.Collections;
using PetShop.Utility;

namespace PetShop.SQLServerDAL {

 /// <summary>
 /// The SqlHelper class is intended to encapsulate high performance,
 /// scalable best practices for common uses of SqlClient.
 /// </summary>
 public abstract class SQLHelper {
  
  //Database connection strings
  public static readonly string CONN_STRING_NON_DTC = ConnectionInfo.DecryptDBConnectionString(ConfigurationSettings.AppSettings["SQLConnString1"]);
  public static readonly string CONN_STRING_DTC_INV = ConnectionInfo.DecryptDBConnectionString(ConfigurationSettings.AppSettings["SQLConnString2"]);  
  public static readonly string CONN_STRING_DTC_ORDERS = ConnectionInfo.DecryptDBConnectionString(ConfigurationSettings.AppSettings["SQLConnString3"]);
  
  // Hashtable to store cached parameters
  private static Hashtable parmCache = Hashtable.Synchronized(new Hashtable());
 
  public static int ExecuteNonQuery(string connString, CommandType cmdType, string cmdText, params SqlParameter[] cmdParms) {

   SqlCommand cmd = new SqlCommand();

   using (SqlConnection conn = new SqlConnection(connString)) {
    PrepareCommand(cmd, conn, null, cmdType, cmdText, cmdParms);
    int val = cmd.ExecuteNonQuery();
    cmd.Parameters.Clear();
    return val;
   }
  }

  public static int ExecuteNonQuery(SqlConnection conn, CommandType cmdType, string cmdText, params SqlParameter[] cmdParms) {

   SqlCommand cmd = new SqlCommand();

   PrepareCommand(cmd, conn, null, cmdType, cmdText, cmdParms);
   int val = cmd.ExecuteNonQuery();
   cmd.Parameters.Clear();
   return val;
  }

  public static int ExecuteNonQuery(SqlTransaction trans, CommandType cmdType, string cmdText, params SqlParameter[] cmdParms) {
   SqlCommand cmd = new SqlCommand();
   PrepareCommand(cmd, trans.Connection, trans, cmdType, cmdText, cmdParms);
   int val = cmd.ExecuteNonQuery();
   cmd.Parameters.Clear();
   return val;
  }

  public static SqlDataReader ExecuteReader(string connString, CommandType cmdType, string cmdText, params SqlParameter[] cmdParms) {
   SqlCommand cmd = new SqlCommand();
   SqlConnection conn = new SqlConnection(connString);

   // we use a try/catch here because if the method throws an exception we want to
   // close the connection throw code, because no datareader will exist, hence the
   // commandBehaviour.CloseConnection will not work
   try {
    PrepareCommand(cmd, conn, null, cmdType, cmdText, cmdParms);
    SqlDataReader rdr = cmd.ExecuteReader(CommandBehavior.CloseConnection);
    cmd.Parameters.Clear();
    return rdr;
   }catch {
    conn.Close();
    throw;
   }
  }
  
  public static object ExecuteScalar(string connString, CommandType cmdType, string cmdText, params SqlParameter[] cmdParms) {
   SqlCommand cmd = new SqlCommand();

   using (SqlConnection conn = new SqlConnection(connString)) {
    PrepareCommand(cmd, conn, null, cmdType, cmdText, cmdParms);
    object val = cmd.ExecuteScalar();
    cmd.Parameters.Clear();
    return val;
   }
  }
  public static object ExecuteScalar(SqlConnection conn, CommandType cmdType, string cmdText, params SqlParameter[] cmdParms) {
   
   SqlCommand cmd = new SqlCommand();

   PrepareCommand(cmd, conn, null, cmdType, cmdText, cmdParms);
   object val = cmd.ExecuteScalar();
   cmd.Parameters.Clear();
   return val;
  }

  public static void CacheParameters(string cacheKey, params SqlParameter[] cmdParms) {
   parmCache[cacheKey] = cmdParms;
  }
  public static SqlParameter[] GetCachedParameters(string cacheKey) {
   SqlParameter[] cachedParms = (SqlParameter[])parmCache[cacheKey];
   
   if (cachedParms == null)
    return null;
   
   SqlParameter[] clonedParms = new SqlParameter[cachedParms.Length];

   for (int i = 0, j = cachedParms.Length; i < j; i++)
    clonedParms[i] = (SqlParameter)((ICloneable)cachedParms[i]).Clone();

   return clonedParms;
  }

  private static void PrepareCommand(SqlCommand cmd,
   SqlConnection conn, SqlTransaction trans, CommandType cmdType, string cmdText, SqlParameter[] cmdParms) {

   if (conn.State != ConnectionState.Open)
    conn.Open();

   cmd.Connection = conn;
   cmd.CommandText = cmdText;

   if (trans != null)
    cmd.Transaction = trans;

   cmd.CommandType = cmdType;

   if (cmdParms != null) {
    foreach (SqlParameter parm in cmdParms)
     cmd.Parameters.Add(parm);
   }
  }
 }
}

转载:HUDSON邮件模板问题 <众里寻他千百度,蓦然回首,那‘人’却在灯火阑珊处>

转载:http://blog.csdn.net/bxyz1203/article/details/7397078      【众里寻他千百度,蓦然回首,那‘人’却在灯火阑珊处】 【...

HUDSON邮件模板问题 <众里寻他千百度,蓦然回首,那‘人’却在灯火阑珊处>

【众里寻他千百度,蓦然回首,那‘人’却在灯火阑珊处】 【问题描述】 hudson邮件功能太弱了,项目经理说,能不能换成好看的。 我就在hudson仓库中找了Email-ext+p...

奋斗吧,程序员——第十三章 蓦然回首,那人却在灯火阑珊处

当你出去打完球回来,手机依然是安静地沉睡在那里,持续了好久。 没有人牵挂,也省去了在每个月的月末接近400条短信的时候会不断地打10086查询的麻烦。 又或者象现在这样,手机上闪动着未回复的短信,...

众里寻他千百度,蓦然回首,那人却在。。。。。

第一个项目终于完成了,做的很辛苦,每天都要凌晨好几点才能睡觉,有时鼻血不经意间就流淌出来了,兄弟们,有木有?有木有?最大的感受就是:思路决定出路。做某个模块之前,我会在笔记本上写好思路,敲代码就看着写...

【年度总结】蓦然回首,我在灯火阑珊处

写在前面         风风火火已经在提高班带了1年半的时间了。如果说自己的成长中,有四成是努力获得的,那么剩下的六成就是老师给的。1. 总结          回头看这一年自己的收货真的很不少,在...

蓦然回首,灯火阑珊——自考总结

又一次自考结束了,回收这次准备的阶段,我们四人组攻坚克难,不断朝着预定的目标进步,也是一种值得怀念的日子. 考过就是过了     考试历来都有过于不过之说,但是作为米老师的学生我们都秉承考过就是过了的...

basename()—众里寻他千百度,那人却在linux函数库

这是一桩因不熟悉linux函数引发的惨案,容我吃口热翔后为大家细细道来:      我想在linux上用C借助socket实现一个文件传输的软件,输入文件的目录后将该文件从客户端发送到服务器,包括该文...

“邦定”是什么,是灯火阑珊处的她

经常看到如上图所示的PCB板,PCB板上有个被黑色物质覆盖的区域。之前不知她的芳名,以为是害羞,怕被他人看到故意隐藏自己的遮挡物。(以为里面是被覆盖的芯片)...

灯火阑珊处等你回眸

梦里花开了又落,你来了又走,渐行渐远的是熟悉的身影。明日,是海鸟和鱼的距离,是天涯与海角的距离。逝水无痕,风轻云淡之际,再回首往事,只见灯火阑珊人影渺茫。               ------题...

灯火阑珊处——Agile

虽然已经走出了校园,离开了导师的团队,但心底总有那么一个东西在隐隐作祟。 起源:         研究生的生活着实充满了挑战,期间的项目开发着实深深的影响了我,乃至我的职业规划。那时,有幸通过导师...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:众里寻他千百度,蓦然回首,那人却在灯火阑珊处
举报原因:
原因补充:

(最多只允许输入30个字)