窗体应用程序的数据库的配置及其架构理解。

做过此类程序的人都知道,windows窗体应用程序是属于CS架构的,分为:DAL(数据层)、BLL(逻辑层)、UIL(界面层) 这三层。DAL(数据层)被BLL (逻辑层)引用,BLL被UIL(界面层)引用,所以这三层架构之间的相互引用可以实现数据的交互。

如图:

CS socket架构图 cs架构程序_sql


配置之前需要了解它:存储过程。

存储过程可以说是数据处理的核心,也就是数据库编程中(SQL)的增删查改。这也是启蒙我对软件开发的第一个基础概念。

还有就是配置之前要先新建三个项目再解决方案中,分别是逻辑层、数据层、界面层如图:

CS socket架构图 cs架构程序_数据_02


配置数据库:

CS socket架构图 cs架构程序_存储过程_03

在DataLink(DAL数据层)中写一个公共类,类的成员“协同负责”连接数据库。
Sqlcnnstr是连接地址,该字符串标识连接数据库对象和用户名密码等。
SqlConnection对象、Sqlcommand对象、SqlDataAdapter对象、DataTable对象,这四个类对象在下面的查询方法中调用时被实例化,最后返回查询的结果DataTable。

应用理解:
所以利用这个DAL_SelectDB()方法可以做一个简单的用户登陆验证,原理就是根据Username和 Password查询该用户,如果有此用户就登陆成功。如图登陆页面:

CS socket架构图 cs架构程序_CS socket架构图_04

为(界面层/UIL)登陆按钮绑定一个事件:

CS socket架构图 cs架构程序_sql_05

逻辑层(BLL):

CS socket架构图 cs架构程序_存储过程_06

那么最后发现数据层好像不见了,其实数据层就在写最上面: DAL_SelectDB()。这个方法里面有两个参数要注意一下,第一个是存储过程的名字,第二个是存储过程的值。以前院长说这叫:“存储过程参数化”,如今总算是懂了,意思即是这个存储过程里面可以有很多,根据参数来选择需要调用的sql。那么数据层是如何知道此用户是可以登陆的呢?对了,其实还有一部分就是数据库方面的编程,那部分代码显得很隐秘但也是不可或缺的,代码如下:

CS socket架构图 cs架构程序_数据_07

If语句判断@type的值,也就是判断存储过程的参数,如果是调用验证用户登陆,那么逻辑层调用时就DAL_SelectDB(“checklogin”,sqlpas), sqlpas 数组中存放的是一些验证登陆用的Username和Password 实参(值),对应上图中的@userName、@password 存储过程中的形参。这样一步步就调用就逐层返回到UIL界面层以供页面做出响应:登陆成功或者登陆失败。

编码需注意:
参数名称必须一一对应,参数的数据类型也要对应,二者缺一不可。

学习心得:
这是刚入学的时候十花了二天学的东西,对于那时的我来说这上课也是听的懵懵懂懂,所以我必须把它“吃掉”,直到今天才有机会把它写出来。虽然内容不多举的例子也很一般,但是我觉得里面的逻辑才是精华!用后台数据作为支持,sql语句是逻辑的开始;数据层中连接它,这个连接的类是一个通道;逻辑层引用数据层,帮助界面层实现数据的交互。妙哉!