1、(IDintidentity(1,1)primarykey,Titlenvarchar(50)notnull,ContentntextAddDatedatetimeCategoryIDnull二、项目文件架构实现步骤为:4-3-6-5-2-1ID项目描述用途项目引用关系实例所需文件相关方法Web表现层Web页和控件引用BLLWebUI.aspxWebUI.aspx.csGetContent()2BLL业务逻辑层业务逻辑组件引用 IDAL,Model,使用DALFactory创建实例Content.csContentInfo GetContentInfo(int id)3IDAL数据访问层接口定
2、义每个DAL实现都要实现的一组接口引用 ModelIContent.cs4Model业务实体传递各种数据的容器无引用ContentInfo.cs5DALFactory数据层的抽象工厂创建反射,用来确定加载哪一个数据库访问程序集的类引用IDAL,通过读取web.config里设置的程序集,加载类的实例,返回给BLL使用。IDAL.Icontent create()6SQLServerDALSQLServer数据访问层Microsoft SQL Server特定的Pet Shop DAL实现,使用了IDAL接口引用 Model和IDAL,被DALFactory加载的程序集,实现接口里的方法。Sql
3、Helper.csSqlDataReader ExecuteReader()PrepareCommand()OracleDALOracle数据访问层7DBUtility数据库访问组件基础类GetSqlServerConnectionString得到数据库连接字符串,也可省去该项目,在SQLServerDAL.SqlHelper中用static readonly string SqlConnectionString代替。实现步骤过程1、创建Model,实现业务实体。2、创建IDAL,实现接口。3、创建SQLServerDAL,实现接口里的方法。4、增加web.config里的配置信息,为SQLS
4、erverDAL的程序集。5、创建DALFactory,返回程序集的指定类的实例。6、创建BLL,调用DALFactory,得到程序集指定类的实例,完成数据操作方法。7、创建WEB,调用BLL里的数据操作方法。注意:1、web.config里的程序集名称必须与SQLServerDAL里的输出程序集名称一致。2、DALFactory里只需要一个DataAccess类,可以完成创建所有的程序集实例。3、项目创建后,注意修改各项目的默认命名空间和程序集名称。4、注意修改解决方案里的项目依赖。5、注意在解决方案里增加各项目引用。三、各层间的访问过程1、传入值,将值进行类型转换(为整型)。2、创建BLL
5、层的content.cs对象c,通过对象c访问BLL层的方法GetContentInfo(ID)调用BLL层。3、BLL层方法GetContentInfo(ID)中取得数据访问层SQLServerDAL的实例,实例化IDAL层的接口对象dal,这个对象是由工厂层DALFactory创建的,然后返回IDAL层传入值所查找的内容的方法dal.GetContentInfo(id)。4、数据工厂通过web.config配置文件中给定的webdal字串访问SQLServerDAL层,返回一个完整的调用SQLServerDAL层的路径给 BLL层。5、到此要调用SQLServerDAL层,SQLServe
6、rDAL层完成赋值Model层的对象值为空,给定一个参数,调用SQLServerDAL层的SqlHelper的ExecuteReader方法,读出每个字段的数据赋值给以定义为空的Model层的对象。6、SqlHelper执行sql命令,返回一个指定连接的数据库记录集,在这里需要引用参数类型,提供为打开连接命令执行做好准备PrepareCommand。7、返回Model层把查询得到的一行记录值赋值给SQLServerDAL层的引入的Model层的对象ci,然后把这个对象返回给BLL。8、回到Web层的BLL层的方法调用,把得到的对象值赋值给Lable标签,在前台显示给界面四、项目中的文件清单1、
7、DBUtility项目(1)connectionInfo.csusingSystem;System.Configuration;namespaceUtility/ConnectionInfo的摘要说明。/summarypublicclassConnectionInfostaticstringGetSqlServerConnectionString()returnConfigurationSettings.AppSettingsSQLConnString;2、SQLServerDAL项目(1)SqlHelper.cs抽象类System.Data;System.Data.SqlClient;DBU
8、tility;SqlHelperabstractSqlHelperreadonlyCONN_STRConnectionInfo.GetSqlServerConnectionString();用提供的函数,执行SQL命令,返回一个从指定连接的数据库记录集remarks例如:SqlDataReaderrExecuteReader(connString,CommandType.StoredProcedure,PublishOrders,newSqlParameter(prodid24);/remarksparamname=connectionStringSqlConnection有效的SQL连接字符
9、串commandTypeCommandType:CommandType.Text、CommandType.StoredProcedurecommandTextSQL语句或存储过程commandParametersSqlParameter参数数组SqlDataReader:执行结果的记录集ExecuteReader(stringconnString,CommandTypecmdType,cmdText,paramsSqlParametercmdParms)SqlCommandcmdSqlCommand();SqlConnectionconnSqlConnection(connString);/我
10、们在这里用try/catch是因为如果这个方法抛出异常,我们目的是关闭数据库连接,再抛出异常,因为这时不会有DataReader存在,此后commandBehaviour.CloseConnection将不会工作。tryPrepareCommand(cmd,conn,null,cmdParms);rdrcmd.ExecuteReader(CommandBehavior.CloseConnection);cmd.Parameters.Clear();rdr;catchconn.Close();throw;为执行命令做好准备:打开数据库连接,命令语句,设置命令类型(SQL语句或存储过程),函数语取
11、。cmd组件conntransSqlTransaction组件,可以为nullcmdType语句类型:cmdTextSQL语句,可以为存储过程cmdParmsSQL参数数组privatevoidPrepareCommand(SqlCommandcmd,trans,(conn.State!ConnectionState.Open)conn.Open();cmd.Connectionconn;cmd.CommandTextcmdText;(transnull)cmd.Transactiontrans;cmd.CommandTypecmdType;(cmdParmsforeach(SqlParame
12、terparmincmd.Parameters.Add(parm);(2)Content.cs类Model;IDAL;Content:IContentconstPARM_IDID;SQL_SELECT_CONTENTSelectID,Title,Content,AddDate,FromWhereContentInfoGetContentInfo(intid)/创意文章内容类cinull;/创建一个参数SqlParameterSqlParameter(PARM_ID,SqlDbType.BigInt,8);/赋上ID值parm.Valueid;using(SqlDataReadersdrSqlH
13、elper.ExecuteReader(SqlHelper.CONN_STR,CommandType.Text,SQL_SELECT_CONTENT,parm)if(sdr.Read()ContentInfo(sdr.GetInt32(0),sdr.GetString(1),sdr.GetString(2),sdr.GetDateTime(3),sdr.GetInt32(4),sdr.GetInt32(5),sdr.GetString(6);ci;3、Model项目(1)contentInfo.csClass1ContentInfo_ID;_Content;_Title;_From;DateT
14、ime_AddDate;_clsID;_tmpID;文章内容构造函数id文章流水号IDcontent文章内容title文章标题from文章来源clsid文章的分类属性IDtmpid文章的模板属性IDContentInfo(intid,stringtitle,stringcontent,stringfrom,DateTimeaddDate,intclsid,inttmpidthis._IDthis._Contentcontent;this._Titletitle;this._Fromfrom;this._AddDateaddDate;this._clsIDclsid;this._tmpIDtmpid;/属性getContentTitle
copyright@ 2008-2023 冰点文库 网站版权所有
经营许可证编号:鄂ICP备19020893号-2