Beispiel #1
0
        private void btn_Back_Click(object sender, EventArgs e)
        {
            frm_ProjectSelect _ProjectSelect = new frm_ProjectSelect(this._UserNo, this._UserName);

            _ProjectSelect.Show();
            this.Hide();
        }
Beispiel #2
0
        private void btn_LogIn_Click(object sender, EventArgs e)
        {
            SqlConnection sqlConnection = new SqlConnection();                                          //声明并实例化SQL连接;

            sqlConnection.ConnectionString =
                "Server=(local);Database=DrugManagement;Integrated Security=sspi";                      //在字符串变量中,描述连接字符串所需的服务器地址、数据库名称、集成安全性(即是否使用Windows验证);
            SqlCommand sqlCommand = sqlConnection.CreateCommand();                                      //调用SQL连接的方法CreateCommand来创建SQL命令;该命令将绑定SQL连接;

            sqlCommand.CommandText =
                "SELECT COUNT(1) FROM tb_User WHERE No=@No AND Password=HASHBYTES('MD5',@Password);";   //指定SQL命令的命令文本;命令文本包含参数;
            #region SQL参数用法1
            SqlParameter sqlParameter = new SqlParameter();                                             //声明并实例化SQL参数;
            sqlParameter.ParameterName = "@No";                                                         //设置SQL参数的名称;
            sqlParameter.Value         = this.txb_UserNo.Text.Trim();                                   //设置SQL参数的长度;
            sqlParameter.SqlDbType     = SqlDbType.Char;                                                //设置SQL参数对应的SQL Server数据类型;
            sqlParameter.Size          = 10;                                                            //设置SQL参数的长度;
            sqlCommand.Parameters.Add(sqlParameter);                                                    //向SQL命令的参数集合添加SQL参数;
            #endregion
            #region SQL参数用法2
            sqlCommand.Parameters.AddWithValue("@Password", this.txb_Password.Text.Trim());             //直接调用方法AddWithValue向SQL命令的参数集合添加参数的名称、值;SQL参数能自动识别类型,但若SQL参数被用作某函数的输入参数,则使用函数定义的参数类型作为SQL参数类型;
            sqlCommand.Parameters["@Password"].SqlDbType = SqlDbType.VarChar;                           //通过参数名称访问SQL参数,并将密码参数的类型设为变长字符串;由于HASHBYTES函数的参数为NVARCHAR,则SQL参数类型自动设为NVARCHAR;对于相同密码,VARCHAR/NVARCHAR类型所获得的散列值不同,故需手动将SQL参数类型统一设为VARCHAR;
            #endregion
            sqlConnection.Open();                                                                       //打开SQL连接;
            int rowCount = (int)sqlCommand.ExecuteScalar();                                             //调用SQL命令的方法ExecuteScalar来执行命令,并接受单个结果(即标量);
            //调用SQL命令的方法ExecuteNonQuery来执行命令,向数据库写入数据,并返回受影响行数;
            if (rowCount == 1)
            {
                MessageBox.Show("登录成功。");
                SqlCommand sqlCommand2 = new SqlCommand();
                sqlCommand2.Connection  = sqlConnection;
                sqlCommand2.CommandText = "SELECT Name FROM tb_User WHERE No=@No;";
                sqlCommand2.Parameters.AddWithValue("@No", this.txb_UserNo.Text.Trim());
                SqlDataReader sqlDataReader = sqlCommand2.ExecuteReader();
                if (sqlDataReader.Read())
                {
                    this.UserName = sqlDataReader["Name"].ToString();
                }

                frm_ProjectSelect _ProjectSelect = new frm_ProjectSelect(this.txb_UserNo.Text.Trim(), this.UserName);
                _ProjectSelect.ShowDialog();
                this.Hide();
                sqlConnection.Close();
            }
            else
            {
                MessageBox.Show("用户号/密码有误,请重新输入!");
                this.txb_Password.Focus();                                                  //密码文本框获得焦点;
                this.txb_Password.SelectAll();                                              //密码文本框内所有文本被选中;
            }
        }
Beispiel #3
0
        private void frm_Repertory_FormClosed(object sender, FormClosedEventArgs e)
        {
            frm_ProjectSelect _ProjectSelect = new frm_ProjectSelect(_UserNo, _UserName);

            _ProjectSelect.Show();
        }