既然您看到这里了那可就证明了您对窗体应用程序有一定的了解,窗体的设计以及控件的拖拉就不详细说明,现在重点分享一个数据库的配置。
做过这种程序的人都知道,windows窗体应用程序是属于CS架构的,通常是分为:DAL(数据层)、BLL(逻辑层)、UIL(界面层) 这三层。DAL(数据层)被BLL (逻辑层)引用,BLL被UIL(界面层)引用最后显示到窗体中呈现给用户。
如图:
配置之前需要了解它:存储过程。
为了连接数据库后有一定的数据显示效果,那我们就应该到数据库可编程性中新建一个存储过程,说简单点它就是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;
}
}
结果图片:
//UIL层
BLL.CheckLogin myBll = new CheckLogin();//实例化逻辑层
private void Main_Load(object sender, EventArgs e)
{
dataGridView1.DataSource = myBll.IniteTable();
}
注意:请勿混淆各参数之间的名称和值!