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

来源:互联网 发布:网站模板源码免费下载 编辑:程序博客网 时间:2024/05/20 23:31

练习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文件中剩下的代码都是与程序功能相关性较高的代码利于维护。


0 0
原创粉丝点击