CS架构中窗体应用程序数据库的简单配置——查询篇

时间:2024-03-29 10:28:41

既然您看到这里了那可就证明了您对窗体应用程序有一定的了解,窗体的设计以及控件的拖拉就不详细说明,现在重点分享一个数据库的配置。
做过这种程序的人都知道,windows窗体应用程序是属于CS架构的,通常是分为:DAL(数据层)、BLL(逻辑层)、UIL(界面层) 这三层。DAL(数据层)被BLL (逻辑层)引用,BLL被UIL(界面层)引用最后显示到窗体中呈现给用户。
如图:CS架构中窗体应用程序数据库的简单配置——查询篇
配置之前需要了解它:存储过程。
为了连接数据库后有一定的数据显示效果,那我们就应该到数据库可编程性中新建一个存储过程,说简单点它就是sql语句,对数据库进行操作的代码。

以下,第一段是验证登陆查询,第二个是用户表的查询:

USE [AccountBootStrap]
GO
/****** Object:  StoredProcedure [dbo].[forCheckLogin]    Script Date: 2019/2/7 14:19:21 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author:		<Author,,Name>
-- Create date: <Create Date,,>
-- Description:	<Description,,>
-- =============================================
ALTER PROCEDURE  [dbo].[forCheckLogin]
    @type NCHAR(100) = '' ,
    @userName NCHAR(30) = '' ,
    @password NCHAR(100) = ''
AS
BEGIN
	IF @type = 'checkLogin'
    SELECT *
    FROM    dbo.crm_User	
    WHERE   RTRIM(LTRIM(dbo.crm_User.UserName)) = RTRIM(LTRIM(@userName))   AND RTRIM(LTRIM(dbo.crm_User.LoginPassWord))= RTRIM(LTRIM(@password))

	IF @type='InitTable'
	SELECT *
	FROM dbo.crm_User
END

其中有三个参数:
@type NCHAR(100) = ‘’ ,
@userName NCHAR(30) = ‘’ ,
@password NCHAR(100) = ‘’
第一个参数是用来根据操作类型执行不同的sql命令,后面连个验证登陆。

当准备好了一个存储过程和一个窗体后开始配置:

在一个公共类中定义以下成员:

 //连接地址,数据库名称,用户名,密码
        string sqlcnnstr = @"Data Source=127.0.0.1;Initial Catalog = AccountBootStrap;User ID = sa ;Password = 123";
        #region 初始化ADO.NET变量
        SqlConnection sqlcn;//连接对象
        SqlCommand sqlcmd;//命令对象
        SqlDataAdapter sqlda;//数据适配器
        DataTable dt;//数据表
        #endregion

接着写一个方法,第一个参数是存储过程的名字,第二个是sql命令参数数组。

//DAL层
 public DataTable DAL_SelectDB(string mysqlStr, SqlParameter[] SQLCMDPas)
  {
            sqlcn = new SqlConnection(sqlcnnstr);//创建数据库连接对象
            sqlcmd = new SqlCommand(mysqlStr, sqlcn);//用存储过程的名字+(数据库)连接对象 初始化命令实例
            sqlcmd.CommandType = CommandType.StoredProcedure;//设置命令类型为存储过程
            foreach (var item in SQLCMDPas)
            {
                sqlcmd.Parameters.Add(item);//把外部传过来的命令参数填充到当前命令对象中
            }
            dt = new DataTable();//创建数据表对象
            sqlda = new SqlDataAdapter(sqlcmd);//根据命令配置数据
            sqlda.Fill (dt);//将配置好的数据填充到dt 表格中
            return this.dt;   
        }

这个方法被调用时只要传入一个数据库中的存储过程名字和sql参数数组即可返回想要的数据表

在BLL中引用DAL之后并实例化它:

//BLL层
 public class CheckLogin
{
   	DataLink.DealData DAL = new DataLink.DealData();
    public DataTable IniteTable()
    {
         SqlParameter[] sqlPams = new SqlParameter[]
         {
             new SqlParameter("@type",SqlDbType.NChar),//参数的名称,参数的类型
         };
         sqlPams[0].Value = "InitTable";//参数的值
         var ss = DAL.DAL_SelectDB("forCheckLogin", sqlPams);//调用DAL层查询
         return ss;
     }
}

结果图片:
CS架构中窗体应用程序数据库的简单配置——查询篇

//UIL层
   BLL.CheckLogin myBll = new CheckLogin();//实例化逻辑层
  private void Main_Load(object sender, EventArgs e)
  {
         dataGridView1.DataSource = myBll.IniteTable();
     }

注意:请勿混淆各参数之间的名称和值!