⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 login.cs

📁 东软内部材料(三)程序设计导论
💻 CS
字号:
using System;
using System.Data;
using System.Data.SqlClient;
using System.Configuration;
using System.Text;
using System.Security.Cryptography;

namespace DBUtils
{
	/// <summary>
	/// 该类所有的函数都是为模块“登录”提供操作数据库功能的。
	/// 所涉及的知识点可以参阅课本第九章到第十一章。
	/// </summary>

	public class Login
	{
		//该函数将查询员工的登录密码。
		//参数 strLoginName:员工的登录名。
		//参数 arPword:保存返回的登录密码。
		//返回值:DBResult.Success 或 DBResult.Failed,表示操作成功与否。
		public static int GetSavedPassword(string strLoginName ,ref byte[] arPword ) 
		{

			// 创建连接数据库的 Connection 对象。
			SqlConnection cn = new SqlConnection(DBConnection.ConnectionString);

			SqlCommand cmd = new SqlCommand("spwebGetEmpPassword", cn);

			// 设置该 Command 执行的是一个存储过程
			cmd.CommandType = CommandType.StoredProcedure;

			//为存储过程添加参数。
			SqlParameter paramLoginName = new SqlParameter("@LoginName", SqlDbType.Char, 20);
			paramLoginName.Value = strLoginName;
			cmd.Parameters.Add(paramLoginName);

			//为存储过程添加参数,注意该参数为输出类型。
			SqlParameter paramPassword = new SqlParameter("@Pword", SqlDbType.Binary, 20);
			paramPassword.Direction = ParameterDirection.Output;
			cmd.Parameters.Add(paramPassword);

			// 为存储过程添加返回参数,该参数的值如果为 0 则表示数据库操作失败,非 0 则为成功。
			SqlParameter paramReturn = new SqlParameter("@ReturnValue", SqlDbType.Int);
			paramReturn.Direction = ParameterDirection.ReturnValue;
			cmd.Parameters.Add(paramReturn);

			int iRetValue = (int)DBResult.Success;

			try
			{
				// 打开数据库连接,执行对数据库的操作。注意操作数据库会引发异常。
				cn.Open();
				// Command 对象的 ExecuteNonQuery 方法用来执行不返回记录集的 SQL 语句或存储过程。
				cmd.ExecuteNonQuery();

				if ((int)paramReturn.Value == 1)
				{
					//如果返回参数的值为 1,则标识数据库操作成功。
					arPword = (byte[])paramPassword.Value;
				}
				else
				{
					//否则标识数据库操作失败。
					iRetValue = (int)DBResult.Failed;
				}

			}
			catch ( Exception e)
			{
				// 产生异常,则对 iRetValue 赋值标志数据库操作失败。
				iRetValue = (int)DBResult.Failed;
			}
			finally
			{
				// 关闭数据库连接,以节省系统资源。
				if (cn.State == ConnectionState.Open)
				{
					cn.Close();
				}
			}

			return iRetValue;

		}

		//该函数将查询员工的员工编号。
		//参数 strLoginName:员工的登录名。
		//参数 iEmpID:保存返回的员工编号。
		//返回值:DBResult.Success 或 DBResult.Failed,表示操作成功与否。
		public static int GetEmployeeID(string strLoginName, ref int iEmpID )
		{

			// 创建连接数据库的 Connection 对象。
			SqlConnection cn = new SqlConnection(DBConnection.ConnectionString);

			SqlCommand cmd = new SqlCommand("spwebGetEmployeeID", cn);

			// 设置该 Command 执行的是一个存储过程
			cmd.CommandType = CommandType.StoredProcedure;

			//为存储过程添加参数。
			SqlParameter paramLoginName = new SqlParameter("@LoginName", SqlDbType.NChar, 20);
			paramLoginName.Value = strLoginName;
			cmd.Parameters.Add(paramLoginName);

			//为存储过程添加参数,注意该参数为输出类型。
			SqlParameter paramEmpID = new SqlParameter("@EmpID", SqlDbType.Int);
			paramEmpID.Direction = ParameterDirection.Output;
			cmd.Parameters.Add(paramEmpID);

			// 为存储过程添加返回参数,该参数的值如果为 0 则表示数据库操作失败,非 0 则为成功。
			SqlParameter paramReturn = new SqlParameter("@ReturnValue", SqlDbType.Int);
			paramReturn.Direction = ParameterDirection.ReturnValue;
			cmd.Parameters.Add(paramReturn);

			int iRetValue = (int)DBResult.Success;

			try
			{
				// 打开数据库连接,执行对数据库的操作。注意操作数据库会引发异常。
				cn.Open();
				// Command 对象的 ExecuteNonQuery 方法用来执行不返回记录集的 SQL 语句或存储过程。
				cmd.ExecuteNonQuery();
			}

			catch ( Exception e)
			{
				// 产生异常,则对 iRetValue 赋值标志数据库操作失败。
				iRetValue = (int)DBResult.Failed;
			}

			finally
			{
				// 关闭数据库连接,以节省系统资源。
				if( cn.State == ConnectionState.Open )
				{
					cn.Close();
				}

			}
			if ((int)paramReturn.Value == 1 )
			{
				//如果返回参数的值为 1,则标识数据库操作成功。
				iEmpID =Int32.Parse ( paramEmpID.Value.ToString().Trim()) ;
			}
			else
			{
				//否则标识数据库操作失败。
				iRetValue = (int)DBResult.Failed;
			}
																										
			return iRetValue;

		}
	}

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -