关于项目架构的一些浅谈

摘要:
我个人认为,数据库设计应该完全以需求和性能为导向。存储过程在某种程度上是业务逻辑的原始表达。索引主要用于维护表的完整性和提高数据读取的性能。当其他人总是费力地使用add方法向存储过程添加参数时,8///SqlCilent基于数据操作基类(完整存储过程实现)9///<

         最近,一直在学习和摸索关于项目架构的东东。或许说架构说得有点太大。但是还是暂且用着吧。
也看看过几个高手关于三层架构和MVC模型的文章,觉得很多东西的理解和自己的不是很一样。但是自己确实没有他们研究的深入,所以也不妄加评论。
        在这里想说的是,自己幼稚的观点欢迎各位砸砖;自己绝对的言语只是针对自己的想法。
        我不是什么大虾,所以肯定没有架子,不会跟别人撑死争执,只会死缠着问。
      
          一、数据库设计的角度来说。个人的观点是数据库的设计应该是完全的面向需求和性能。而不应该考虑或是只是适当考虑代码设计的问题。 
                       表结构对程序的设计是有相当大的影响的。但是我们的表是根据需求来做的,同时考虑将来访问的性能问题。视图某种程度上是表 的延伸,但是他依赖表的设计。存储过程是业务逻辑一定程度上原始的表达。
          总结:数据库设计中对系统架构设计颇有影响的就是:表,视图,存储过程
                     其他的,比如约束,索引主要是维持表的完整性和提高数据读取的性能,对系统的结构影响甚微。
        恕我无知,我在做数据库设计是一般就是用到这么几个元素,其中索引用之很少。
       我是坚定的存储过程派(如果分派的话),在这里不去讨论两派的论战了。但是对存储过程的使用也是相当的有疑惑:
               1.存储过程抽空了业务逻辑的功能,让业务逻辑名存实亡;
               2.存储过程加大了数据与UI的耦合度(呵呵,不知道自己对耦合的理解对否?)
               3.项目中存储过程泛滥(很简单的SQL写成了存储过程,很多功能相似的存储过程)
               4.对于3采用动态存储过程,就出现耦合严重
         二、数据库访问层
              1. 看过好几个项目,看到别人的做法总是不厌其烦的用add方法向存储过程添加参数的时候,就在怀疑自己的做法是不很好。
我想为什么不做出一个通用的方法呢?
                             代码如下:
                  

  1关于项目架构的一些浅谈第1张using System;
  2关于项目架构的一些浅谈第1张using System.Data;
  3关于项目架构的一些浅谈第1张using System.Data.SqlClient;
  4关于项目架构的一些浅谈第1张
  5关于项目架构的一些浅谈第1张namespace DB.Componse
  6关于项目架构的一些浅谈第6张关于项目架构的一些浅谈第7张关于项目架构的一些浅谈第8张{
  7关于项目架构的一些浅谈第9张关于项目架构的一些浅谈第10张        /**//// <summary>
  8关于项目架构的一些浅谈第11张        ///基于SqlCilent的数据操作基类(全存储过程实现)
  9关于项目架构的一些浅谈第12张        /// </summary>

 10关于项目架构的一些浅谈第11张     public class SqlProcedure :IDisposable
 11关于项目架构的一些浅谈第9张关于项目架构的一些浅谈第10张    关于项目架构的一些浅谈第8张{
 12关于项目架构的一些浅谈第17张关于项目架构的一些浅谈第18张         构造和声明#region  构造和声明
 13关于项目架构的一些浅谈第9张关于项目架构的一些浅谈第10张         /**//// <summary>
 14关于项目架构的一些浅谈第11张         /// 构造函数
 15关于项目架构的一些浅谈第12张         /// </summary>

 16关于项目架构的一些浅谈第11张         public SqlProcedure()
 17关于项目架构的一些浅谈第9张关于项目架构的一些浅谈第10张         关于项目架构的一些浅谈第8张{            
 18关于项目架构的一些浅谈第12张         }

 19关于项目架构的一些浅谈第9张关于项目架构的一些浅谈第10张         /**//// <summary>
 20关于项目架构的一些浅谈第11张        /// 重构构造函数
 21关于项目架构的一些浅谈第11张        /// 带有参数ConnStr(表示连接字符串)
 22关于项目架构的一些浅谈第12张        /// </summary>

 23关于项目架构的一些浅谈第11张        public SqlProcedure(string ConnStr)
 24关于项目架构的一些浅谈第9张关于项目架构的一些浅谈第10张        关于项目架构的一些浅谈第8张{
 25关于项目架构的一些浅谈第11张            this.ConnStr = ConnStr;
 26关于项目架构的一些浅谈第11张           // this.ConnOpen();数据库连接打开不必过早
 27关于项目架构的一些浅谈第12张        }

 28关于项目架构的一些浅谈第9张关于项目架构的一些浅谈第10张         /**//// <summary>
 29关于项目架构的一些浅谈第11张         /// 析构函数
 30关于项目架构的一些浅谈第12张         /// </summary>

 31关于项目架构的一些浅谈第11张         ~SqlProcedure()
 32关于项目架构的一些浅谈第9张关于项目架构的一些浅谈第10张         关于项目架构的一些浅谈第8张{
 33关于项目架构的一些浅谈第11张             this.ConnClose();
 34关于项目架构的一些浅谈第11张             this.Dispose();
 35关于项目架构的一些浅谈第12张         }

 36关于项目架构的一些浅谈第9张关于项目架构的一些浅谈第10张         /**//// <summary>
 37关于项目架构的一些浅谈第11张         /// 打开数据库连接
 38关于项目架构的一些浅谈第12张         /// </summary>

 39关于项目架构的一些浅谈第11张         private void ConnOpen()
 40关于项目架构的一些浅谈第9张关于项目架构的一些浅谈第10张         关于项目架构的一些浅谈第8张{
 41关于项目架构的一些浅谈第11张             if (Conn == null)
 42关于项目架构的一些浅谈第9张关于项目架构的一些浅谈第10张             关于项目架构的一些浅谈第8张{
 43关于项目架构的一些浅谈第11张                 //实例化数据库连接对象
 44关于项目架构的一些浅谈第11张                 Conn = new SqlConnection(ConnStr);
 45关于项目架构的一些浅谈第11张                 Conn.Open();
 46关于项目架构的一些浅谈第12张             }

 47关于项目架构的一些浅谈第12张         }

 48关于项目架构的一些浅谈第9张关于项目架构的一些浅谈第10张         /**//// <summary>
 49关于项目架构的一些浅谈第11张         /// 关闭数据库连接
 50关于项目架构的一些浅谈第12张         /// </summary>

 51关于项目架构的一些浅谈第11张         private void ConnClose()
 52关于项目架构的一些浅谈第9张关于项目架构的一些浅谈第10张         关于项目架构的一些浅谈第8张{
 53关于项目架构的一些浅谈第11张             if (Conn != null)
 54关于项目架构的一些浅谈第9张关于项目架构的一些浅谈第10张             关于项目架构的一些浅谈第8张{
 55关于项目架构的一些浅谈第11张                 Conn.Close();
 56关于项目架构的一些浅谈第12张             }

 57关于项目架构的一些浅谈第12张         }

 58关于项目架构的一些浅谈第9张关于项目架构的一些浅谈第10张         /**//// <summary>
 59关于项目架构的一些浅谈第11张         /// 释放数据库连接对象的资源
 60关于项目架构的一些浅谈第12张         /// </summary>

 61关于项目架构的一些浅谈第11张         public void Dispose()
 62关于项目架构的一些浅谈第9张关于项目架构的一些浅谈第10张         关于项目架构的一些浅谈第8张{
 63关于项目架构的一些浅谈第11张             if (Conn != null)
 64关于项目架构的一些浅谈第9张关于项目架构的一些浅谈第10张             关于项目架构的一些浅谈第8张{
 65关于项目架构的一些浅谈第11张                 Conn.Dispose();
 66关于项目架构的一些浅谈第11张                 Conn = null;
 67关于项目架构的一些浅谈第12张             }

 68关于项目架构的一些浅谈第12张         }

 69关于项目架构的一些浅谈第9张关于项目架构的一些浅谈第10张         /**//// <summary>
 70关于项目架构的一些浅谈第11张         /// ConnStr:数据库连接字符串(私有字段)
 71关于项目架构的一些浅谈第11张         /// Conn:数据库连接对象(私有对象)
 72关于项目架构的一些浅谈第12张         /// </summary>

 73关于项目架构的一些浅谈第11张         private string ConnStr;
 74关于项目架构的一些浅谈第11张         private SqlConnection Conn;
 75关于项目架构的一些浅谈第12张         #endregion

 76关于项目架构的一些浅谈第11张
 77关于项目架构的一些浅谈第17张关于项目架构的一些浅谈第18张         数据库Command对象及参数对象的创建#region 数据库Command对象及参数对象的创建
 78关于项目架构的一些浅谈第9张关于项目架构的一些浅谈第10张         /**//// <summary>
 79关于项目架构的一些浅谈第11张         /// 创建一个依赖存储过程的Command对象(私有化)
 80关于项目架构的一些浅谈第11张         /// </summary>
 81关于项目架构的一些浅谈第11张         /// <param name="ProcName">欲调用的存储过程名</param>
 82关于项目架构的一些浅谈第11张         /// <param name="Params">调用存储过程所需的参数集</param>
 83关于项目架构的一些浅谈第12张         /// <returns>一个可使用的Command对象</returns>

 84关于项目架构的一些浅谈第11张         private SqlCommand CreateComm(string ProcName,SqlParameter[] Params)
 85关于项目架构的一些浅谈第9张关于项目架构的一些浅谈第10张         关于项目架构的一些浅谈第8张{
 86关于项目架构的一些浅谈第11张             //创建Command对象
 87关于项目架构的一些浅谈第11张             this.ConnOpen();
 88关于项目架构的一些浅谈第11张             SqlCommand Comm = new SqlCommand(ProcName,Conn);
 89关于项目架构的一些浅谈第11张             Comm.CommandType = CommandType.StoredProcedure;
 90关于项目架构的一些浅谈第11张
 91关于项目架构的一些浅谈第11张             //为其添加参数
 92关于项目架构的一些浅谈第11张             if (Params!=null)
 93关于项目架构的一些浅谈第9张关于项目架构的一些浅谈第10张             关于项目架构的一些浅谈第8张{
 94关于项目架构的一些浅谈第11张                 foreach (SqlParameter temp in Params)
 95关于项目架构的一些浅谈第9张关于项目架构的一些浅谈第10张                 关于项目架构的一些浅谈第8张{
 96关于项目架构的一些浅谈第11张                     Comm.Parameters.Add(temp);
 97关于项目架构的一些浅谈第12张                 }

 98关于项目架构的一些浅谈第11张                 Comm.Parameters.Add(new SqlParameter
 99关于项目架构的一些浅谈第11张                     ("ReturnValue", SqlDbType.Int, 4, ParameterDirection.ReturnValue, false00,
100关于项目架构的一些浅谈第11张                     String.Empty, DataRowVersion.Default, null));
101关于项目架构的一些浅谈第12张              }

102关于项目架构的一些浅谈第11张             return Comm;
103关于项目架构的一些浅谈第12张         }

104关于项目架构的一些浅谈第9张关于项目架构的一些浅谈第10张         /**//// <summary>
105关于项目架构的一些浅谈第11张         /// 参数构造的基本方法(私有化)
106关于项目架构的一些浅谈第11张         /// </summary>
107关于项目架构的一些浅谈第11张         /// <param name="ParamName">参数名</param>
108关于项目架构的一些浅谈第11张         /// <param name="dbType">参数在数据库中的类型</param>
109关于项目架构的一些浅谈第11张         /// <param name="size">参数设置的最大大小</param>
110关于项目架构的一些浅谈第11张         /// <param name="Value">参数的值(object类型)</param>
111关于项目架构的一些浅谈第11张         /// <param name="direction">参数方向</param>
112关于项目架构的一些浅谈第12张         /// <returns>参数对象</returns>

113关于项目架构的一些浅谈第11张         private SqlParameter MakeParam(string ParamName,SqlDbType dbType,int size,object Value,ParameterDirection direction)
114关于项目架构的一些浅谈第9张关于项目架构的一些浅谈第10张         关于项目架构的一些浅谈第8张{
115关于项目架构的一些浅谈第11张             SqlParameter Param = new SqlParameter(ParamName, dbType);
116关于项目架构的一些浅谈第11张             if (size > 0)
117关于项目架构的一些浅谈第9张关于项目架构的一些浅谈第10张             关于项目架构的一些浅谈第8张{
118关于项目架构的一些浅谈第11张                 Param.Size = size;
119关于项目架构的一些浅谈第12张             }

120关于项目架构的一些浅谈第11张             Param.Direction = direction;
121关于项目架构的一些浅谈第11张             if (!(Value==null&&direction==ParameterDirection.Output))
122关于项目架构的一些浅谈第9张关于项目架构的一些浅谈第10张             关于项目架构的一些浅谈第8张{
123关于项目架构的一些浅谈第11张                 Param.Value = Value;
124关于项目架构的一些浅谈第12张             }

125关于项目架构的一些浅谈第11张             return Param;
126关于项目架构的一些浅谈第12张         }

127关于项目架构的一些浅谈第9张关于项目架构的一些浅谈第10张         /**//// <summary>
128关于项目架构的一些浅谈第11张         /// 公开的传入参数方法
129关于项目架构的一些浅谈第11张         /// </summary>
130关于项目架构的一些浅谈第11张         /// <param name="ParamName">参数名</param>
131关于项目架构的一些浅谈第11张         /// <param name="dbType">参数在数据库中的类型</param>
132关于项目架构的一些浅谈第11张         /// <param name="size">参数设置的最大大小</param>
133关于项目架构的一些浅谈第11张         /// <param name="Value">参数的值</param>
134关于项目架构的一些浅谈第12张         /// <returns>参数对象</returns>

135关于项目架构的一些浅谈第11张         public SqlParameter MakeInParam(string ParamName, SqlDbType dbType, int size, object Value)
136关于项目架构的一些浅谈第9张关于项目架构的一些浅谈第10张         关于项目架构的一些浅谈第8张{
137关于项目架构的一些浅谈第11张             return MakeParam(ParamName, dbType, size, Value, ParameterDirection.Input);
138关于项目架构的一些浅谈第12张         }

139关于项目架构的一些浅谈第9张关于项目架构的一些浅谈第10张         /**//// <summary>
140关于项目架构的一些浅谈第11张         /// 公开的传出参数方法
141关于项目架构的一些浅谈第11张         /// </summary>
142关于项目架构的一些浅谈第11张         /// <param name="ParamName">参数名</param>
143关于项目架构的一些浅谈第11张         /// <param name="dbType">参数在数据库中的类型</param>
144关于项目架构的一些浅谈第11张         /// <param name="size">参数设置的最大大小</param>
145关于项目架构的一些浅谈第12张         /// <returns>参数对象</returns>

146关于项目架构的一些浅谈第11张         public SqlParameter MakeOutParam(string ParamName, SqlDbType dbType, int size)
147关于项目架构的一些浅谈第9张关于项目架构的一些浅谈第10张         关于项目架构的一些浅谈第8张{
148关于项目架构的一些浅谈第11张             return MakeParam(ParamName, dbType, size, null, ParameterDirection.Output);
149关于项目架构的一些浅谈第12张         }

150关于项目架构的一些浅谈第12张         #endregion

151关于项目架构的一些浅谈第11张        
152关于项目架构的一些浅谈第17张关于项目架构的一些浅谈第18张         数据库操作方法#region 数据库操作方法
153关于项目架构的一些浅谈第9张关于项目架构的一些浅谈第10张         /**//// <summary>
154关于项目架构的一些浅谈第11张         /// 运行带参数的存储过程,无数据返回
155关于项目架构的一些浅谈第11张         /// </summary>
156关于项目架构的一些浅谈第11张         /// <param name="ProcName">存储过程名</param>
157关于项目架构的一些浅谈第11张         /// <param name="Params">参数集</param>
158关于项目架构的一些浅谈第12张         /// <returns>受影响的行数</returns>

159关于项目架构的一些浅谈第11张         public int ProcNonQuery(string ProcName, SqlParameter[] Params)
160关于项目架构的一些浅谈第9张关于项目架构的一些浅谈第10张         关于项目架构的一些浅谈第8张{
161关于项目架构的一些浅谈第11张             SqlCommand myComm = CreateComm(ProcName, Params);
162关于项目架构的一些浅谈第11张             this.ConnOpen();
163关于项目架构的一些浅谈第11张             int i=myComm.ExecuteNonQuery();
164关于项目架构的一些浅谈第11张             myComm.Parameters.Clear();
165关于项目架构的一些浅谈第11张             this.ConnClose();
166关于项目架构的一些浅谈第11张             //存在index为"ReturnValue"的参数
167关于项目架构的一些浅谈第11张             //int i = Convert.ToInt32(myComm.Parameters["ReturnValue"].Value);
168关于项目架构的一些浅谈第11张             return i;
169关于项目架构的一些浅谈第12张         }

170关于项目架构的一些浅谈第9张关于项目架构的一些浅谈第10张         /**//// <summary>
171关于项目架构的一些浅谈第11张         /// 运行无参数的存储过程,无返回
172关于项目架构的一些浅谈第11张         /// </summary>
173关于项目架构的一些浅谈第11张         /// <param name="ProcName">存储过程名</param>
174关于项目架构的一些浅谈第12张         /// <returns>返回受影响的行数</returns>

175关于项目架构的一些浅谈第11张         public int ProcNonQuery(string ProcName)
176关于项目架构的一些浅谈第9张关于项目架构的一些浅谈第10张         关于项目架构的一些浅谈第8张{
177关于项目架构的一些浅谈第11张             SqlCommand myComm = CreateComm(ProcName, null);
178关于项目架构的一些浅谈第11张             this.ConnOpen();
179关于项目架构的一些浅谈第11张             int i=myComm.ExecuteNonQuery();
180关于项目架构的一些浅谈第11张             this.ConnClose();
181关于项目架构的一些浅谈第11张             //存在index为"ReturnValue"的参数
182关于项目架构的一些浅谈第11张             //int i = Convert.ToInt32(myComm.Parameters["ReturnValue"].Value);
183关于项目架构的一些浅谈第11张             return i;
184关于项目架构的一些浅谈第12张         }

185关于项目架构的一些浅谈第9张关于项目架构的一些浅谈第10张         /**//// <summary>
186关于项目架构的一些浅谈第11张         /// 执行无参存储过程,返回第一行数据
187关于项目架构的一些浅谈第11张         /// </summary>
188关于项目架构的一些浅谈第11张         /// <param name="ProcName">存储过程名</param>
189关于项目架构的一些浅谈第12张         /// <returns>返回一个首行数据对象</returns>

190关于项目架构的一些浅谈第11张         public object ProcScalar(string ProcName)
191关于项目架构的一些浅谈第9张关于项目架构的一些浅谈第10张         关于项目架构的一些浅谈第8张{
192关于项目架构的一些浅谈第11张             SqlCommand myComm = CreateComm(ProcName, null);
193关于项目架构的一些浅谈第11张             this.ConnOpen();
194关于项目架构的一些浅谈第11张             object val = myComm.ExecuteScalar();
195关于项目架构的一些浅谈第11张             this.ConnClose();
196关于项目架构的一些浅谈第11张             return val;
197关于项目架构的一些浅谈第12张         }

198关于项目架构的一些浅谈第9张关于项目架构的一些浅谈第10张         /**//// <summary>
199关于项目架构的一些浅谈第11张         /// 执行有参存储过程,返回第一行数据
200关于项目架构的一些浅谈第11张         /// </summary>
201关于项目架构的一些浅谈第11张         /// <param name="ProcName">存储过程名</param>
202关于项目架构的一些浅谈第11张         /// <param name="Params">参数集</param>
203关于项目架构的一些浅谈第12张         /// <returns>返回一个首行数据对象</returns>

204关于项目架构的一些浅谈第11张         public object ProcScalar(string ProcName, SqlParameter[] Params)
205关于项目架构的一些浅谈第9张关于项目架构的一些浅谈第10张         关于项目架构的一些浅谈第8张{
206关于项目架构的一些浅谈第11张             SqlCommand myComm = CreateComm(ProcName, Params);
207关于项目架构的一些浅谈第11张             this.ConnOpen();
208关于项目架构的一些浅谈第11张             object val=myComm.ExecuteScalar();
209关于项目架构的一些浅谈第11张             myComm.Parameters.Clear();
210关于项目架构的一些浅谈第11张             this.ConnClose();
211关于项目架构的一些浅谈第11张             return val;
212关于项目架构的一些浅谈第12张         }

213关于项目架构的一些浅谈第9张关于项目架构的一些浅谈第10张         /**//// <summary>
214关于项目架构的一些浅谈第11张         /// 运行无参数的存储过程,返回一个DataReader对象数据集
215关于项目架构的一些浅谈第11张         /// </summary>
216关于项目架构的一些浅谈第11张         /// <param name="ProcName">存储过程名</param>
217关于项目架构的一些浅谈第12张         /// <param name="dr">DataReader对象</param>

218关于项目架构的一些浅谈第11张         public void ProcReader(string ProcName, out SqlDataReader dr)
219关于项目架构的一些浅谈第9张关于项目架构的一些浅谈第10张         关于项目架构的一些浅谈第8张{
220关于项目架构的一些浅谈第11张             SqlCommand myComm = CreateComm(ProcName, null);
221关于项目架构的一些浅谈第11张             this.ConnOpen();
222关于项目架构的一些浅谈第11张             dr = myComm.ExecuteReader(CommandBehavior.CloseConnection);
223关于项目架构的一些浅谈第12张         }

224关于项目架构的一些浅谈第9张关于项目架构的一些浅谈第10张         /**//// <summary>
225关于项目架构的一些浅谈第11张         /// 运行带参数的存储过程,返回一个DataReader数据集
226关于项目架构的一些浅谈第11张         /// </summary>
227关于项目架构的一些浅谈第11张         /// <param name="ProcName">存储过程名</param>
228关于项目架构的一些浅谈第11张         /// <param name="Params">参数集</param>
229关于项目架构的一些浅谈第12张         /// <param name="dr">DataReader数据集</param>

230关于项目架构的一些浅谈第11张         public void ProcReader(string ProcName,out SqlDataReader dr, SqlParameter[] Params)
231关于项目架构的一些浅谈第9张关于项目架构的一些浅谈第10张         关于项目架构的一些浅谈第8张{
232关于项目架构的一些浅谈第11张             SqlCommand myComm = CreateComm(ProcName, Params);
233关于项目架构的一些浅谈第11张             this.ConnOpen();
234关于项目架构的一些浅谈第11张             dr = myComm.ExecuteReader(CommandBehavior.CloseConnection);
235关于项目架构的一些浅谈第11张             myComm.Parameters.Clear();
236关于项目架构的一些浅谈第11张            // dr = myComm.ExecuteReader();
237关于项目架构的一些浅谈第11张             //this.ConnClose();
238关于项目架构的一些浅谈第12张         }

239关于项目架构的一些浅谈第9张关于项目架构的一些浅谈第10张         /**//// <summary>
240关于项目架构的一些浅谈第11张         /// 运行带参数的存储过程,返回一个适配器对象DataAdapter
241关于项目架构的一些浅谈第11张         /// </summary>
242关于项目架构的一些浅谈第11张         /// <param name="ProcName">存储过程名</param>
243关于项目架构的一些浅谈第11张         /// <param name="Params">参数集</param>
244关于项目架构的一些浅谈第12张         /// <param name="da">适配器对象</param>

245关于项目架构的一些浅谈第11张         public void ProcAapter(string ProcName, SqlParameter[] Params, out SqlDataAdapter da)
246关于项目架构的一些浅谈第9张关于项目架构的一些浅谈第10张         关于项目架构的一些浅谈第8张{
247关于项目架构的一些浅谈第11张             SqlCommand myComm = CreateComm(ProcName, Params);
248关于项目架构的一些浅谈第11张             this.ConnOpen();
249关于项目架构的一些浅谈第11张             SqlDataAdapter sda = new SqlDataAdapter(myComm);
250关于项目架构的一些浅谈第11张             myComm.Parameters.Clear();
251关于项目架构的一些浅谈第11张             this.ConnClose();
252关于项目架构的一些浅谈第11张             da = sda;
253关于项目架构的一些浅谈第12张         }

254关于项目架构的一些浅谈第9张关于项目架构的一些浅谈第10张         /**//// <summary>
255关于项目架构的一些浅谈第11张         /// 运行无参存储过程,返回适配器对象DataAdapter
256关于项目架构的一些浅谈第11张         /// </summary>
257关于项目架构的一些浅谈第11张         /// <param name="ProcName">存储过程名</param>
258关于项目架构的一些浅谈第12张         /// <param name="da">适配器对象DataAdapter</param>

259关于项目架构的一些浅谈第11张         public void ProcAapter(string ProcName, out SqlDataAdapter da)
260关于项目架构的一些浅谈第9张关于项目架构的一些浅谈第10张         关于项目架构的一些浅谈第8张{
261关于项目架构的一些浅谈第11张             SqlCommand myComm = CreateComm(ProcName, null);
262关于项目架构的一些浅谈第11张             this.ConnOpen();
263关于项目架构的一些浅谈第11张             SqlDataAdapter sda = new SqlDataAdapter(myComm);
264关于项目架构的一些浅谈第11张             this.ConnClose();
265关于项目架构的一些浅谈第11张             da = sda;
266关于项目架构的一些浅谈第12张         }

267关于项目架构的一些浅谈第12张         #endregion

268关于项目架构的一些浅谈第12张     }

269关于项目架构的一些浅谈第346张}

270关于项目架构的一些浅谈第1张

                2.看到经典的petshop4.0中,数据库访问层返回的都是DataReader对象,这样确实很好。但是如果我的一个方法中除了要求返回若干数据集,还要返回传出参数,那怎么办呢?
                      (我的做法是在数据库访问层中先将DataReader中的数据转移),这样感觉有点不伦不类了。
              3.对于这层,现在大虾的做法是用ORM直接生成,所以我想在这层中应该是相当的成熟了。所以很想知道那些比较优良的解决方案。
 
        
                   
   

免责声明:文章转载自《关于项目架构的一些浅谈》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇sqlserver查询数据的所有表名和行数让DataGridView的列宽自适应内容下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

数据库测试数据自动生成工具

数据库测试数据自动生成工具——TestBytes 在数据库开发的过程中,为了测试应用程序对数据库的访问,应当在数据库中生成测试用例数据,我们可能会发现当数据库中只有少量数据时,程序可能没有问题,但是当真正投入到运用中产生了大量数据时就出现问题了,这往往是因为程序的编写没有达到,所以一定及早地通过在数据库中生成大量数据来帮助开发人员完善这部分功能和性能。...

matplotlib显示黑白灰度图像颜色设置

对于黑白灰度图像(矩阵) 1. 默认使用伪彩色拉升 2 cmap参数为 binary,可能导致颜色反转 3. cmap = gray,same color as origin, that is, white means 255 and black means 0...

数据库中varchar类型数据转换为numeric类型

numeric有好几种选择,有整形、小数型等等。都是用cast来实现 前提:A表的ID字段是VARCHAR类型 1.SELECT CAST(ID AS INTEGER) FROM A 2.SELECT CAST(ID AS INT) FROM A 2.SELECT CAST(ID AS DECIMAL(18,X)) FROM A --X指小数位,如果...

mac上使用cnpm搭建npm私有仓库,并上传/下载私有npm包

原文地址:https://www.cnblogs.com/yalong/p/12837461.html 前言 随着Nodejs开发的项目越来越多,Node项目管理就成了一个需要思考的问题了。如果所有项目都开源统一用 NPM 进行管理也没什么问题,但总有一些是我们不希望的完全开放的代码,作为企业是核心秘密保留在公司内部,这个时候就需要在公司内网也搭建一套...

SQL必知必会

数据库基础——数据库术语数据库:数据库是一个以某种有组织的方式存储的数据集合。数据库(database)保存有组织的数据的容器(通常是一个文件或一组文件)。数据库软件应称为数据库管理系统(DBMS)。数据库是通过 DBMS 创建和操纵的容器。表(table)某种特定类型数据的结构化清单。模式(schema)关于数据库和表的布局及特性的信息。表由列组成。列存...

DB: 20 个数据库设计最佳实践

DB: 20 个数据库设计最佳实践 code 使用明确、统一的标明和列名,例如 School, SchoolCourse, CourceID。 数据表名使用单数而不是复数,例如 StudentCourse,而不是StudentCourses。 数据表名不要使用空格。 数据表名不要使用不必要的前缀或者后缀,例如使用School,而不是TblSchool,...