【C#链接数据库】用command和Connection实现系统登录界面

练习1:用command和Connection实现系统登录界面

问题

    一般的程序都需要登录后才能使用,登录时应提供用户名、密码和身份类型。

说明

    本程序采用SqlServer做为数据库。数据库中有一张表名为:recordInfo,用来记录注册用户的信息;表中有3个字段,分别是id(用户名),pwd(密码),type(类型)。

分析

    首先使用以下命名空间:

    using System.Data;

    using System.Data. SqlClient;

    用以下方式创建Connection和Command对象,以便在.NET中操作SqlServer数据库。

    // 创建Connection 对象

            stringconnString = "Data Source=.;Initial Catalog=MySchool;UserID=sa;pwd=sa";

           SqlConnection connection = new SqlConnection(connString);

    // 创建Command 对象

           SqlCommand command = new SqlCommand(sql, connection);

    由于返回的是记录数,所以使用Command对象的ExecuteScalar ()方法执行该命令。

解决方案:

  (1)在SqlServer中创建“MySchool”数据库。添加一个表名为recordInfo的新表,添加3列:id(用户名),pwd(密码),type(类型)。

  (2)向新表recordInfo中添加几行示例数据。

  (3)打开VisualStudio .NET 2005 IDE并新建一个名为ConnectStr的Windows应用程序项目。

  (4)将Form1.cs文件重命名为LoginForm.cs。

  (5)拖动工具箱中的控件,设计如图所示的窗体。

  (6)添加两个按钮的Click事件,程序代码如下:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
//添加名空间
using System.Data;
using System.Data.SqlClient;

namespace ConnectStr
{
    public partial class LoginForm : Form
    {
        //定义LoginForm全局变量
        string name;
        string type;

        public LoginForm()
        {
            InitializeComponent();
        }

        private void label2_Click(object sender, EventArgs e)
        {

        }

        private void btnLogIn_Click(object sender, EventArgs e)
        {
            bool isValidUser = false;   // 标识是否为合法用户  
            // 如果验证通过,就显示相应的用户窗体,并将当前窗体设为不可见
            if (ValidateInput())
            {
                // 调用用户验证方法
                isValidUser = ValidateUser(cboLogInType.Text,txtLogInId.Text,txtLogInPwd.Text);
                // 如果是合法用户,显示相应的窗体
                if (isValidUser)
                {
                    // 将输入的用户名保存到全局变量中
                    name = txtLogInId.Text;
                    // 将选择的登录类型保存到全局变量中
                    type = cboLogInType.Text;
                    ShowUserForm();  // 显示相应用户的主窗体                
                }
            }
        }
        // 验证用户是否进行了输入和选择  
        private bool ValidateInput()
        {
            if (txtLogInId.Text.Trim() == "")
            {
                MessageBox.Show("请输入用户名", "输入提示", MessageBoxButtons.OK,MessageBoxIcon.Information);
                txtLogInId.Focus();
                return false;
            }
            else if (txtLogInPwd.Text.Trim() == "")
            {
                MessageBox.Show("请输入密码", "输入提示", MessageBoxButtons.OK,MessageBoxIcon.Information);
                txtLogInPwd.Focus();
                return false;
            }
            else if (cboLogInType.Text.Trim() == "")
            {
                MessageBox.Show("请选择登录类型", "输入提示", MessageBoxButtons.OK,MessageBoxIcon.Information);
                cboLogInType.Focus();
                return false;
            }
            else
            {
                return true;
            }
        }
        // 验证用户输入的用户名和密码是否正确
        // 验证的结果有两种情况:通过和不通过,返回值为布尔型
        // 不通过的原因可能有多种,在方法的参数中的message字符串,用以标识不通过的情况      
        public bool ValidateUser(string loginType, string loginId, string loginPwd)
        {
            // 创建Connection 对象
            string connString = "Data Source=.;Initial Catalog=MySchool;User ID=sa;pwd=han123";
            SqlConnection connection = new SqlConnection(connString);
            int num = 0;          // 选员信息的数量 
            // 查询用的SQL 语句
            string sql = "SELECT COUNT(*) FROM recordInfo where id='" + loginId + "' and pwd = '" + loginPwd + "' and type = '" + loginType + "'";
            bool isExist = false;
            try
            {
                connection.Open();// 打开数据库连接
                // 创建Command 对象
                SqlCommand command = new SqlCommand(sql, connection);
                // 执行SQL 查询
                num = (int)command.ExecuteScalar();
                if (num > 0)
                {
                    isExist = true;
                }
                else
                {
                    MessageBox.Show("数据库中无此记录!", "提示信息", MessageBoxButtons.OK,MessageBoxIcon.Information);
                }
            }
            catch (Exception ex)//也可根据ex值判断错误
            {
                // 操作出错
                MessageBox.Show("连接数据库出错!");
            }
            finally
            {
                // 关闭数据库连接
                connection.Close();
            }
            return isExist;
        }
        // 根据登录类型,显示相应的窗体
        public void ShowUserForm()
        {
            MessageBox.Show("欢迎使用该系统:" + type + name);
        }
        private void btnCancel_Click(object sender, EventArgs e)
        {
            Application.Exit();
        }
    }
}

  (7)保存并构建应用程序。执行应用程序,以验证其工作情况。运行效果如图所示:

登录界面图

=======================================================================

1.控件属性的学习积累

登陆界面输入密码textbox  PasswordChar

下拉框combobox只能选择不能输入DropDownStyle->DropDownList

=========================================================================

2.对.Designer.cs的理解

designer.cs 是窗体设计器生成的代码文件,作用是对窗体上的控件做初始化工作(在函数InitializeComponent()中)


VS2003以前都把这部分代码放到窗体的cs文件中,但是这部分代码一般不用手工修改。

VS2005以后把它单独分离出来形成一个designer.cs文件与窗体对应,这样cs文件中剩下的代码都是与程序功能相关性较高的代码利于维护。


  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值