} 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(\请输入用户名\输入提示\ MessageBoxIcon.Information); txtLogInId.Focus(); return false; } else if (txtLogInPwd.Text.Trim() == \ { MessageBox.Show(\请输入密码\输入提示\ MessageBoxIcon.Information); txtLogInPwd.Focus(); return false; } else if (cboLogInType.Text.Trim() == \ { MessageBox.Show(\请选择登录类型\输入提示\ MessageBoxIcon.Information); cboLogInType.Focus(); return false; } else { return true; } } // 验证用户输入的用户名和密码是否正确 // 验证的结果有两种情况:通过和不通过,返回值为布尔型 // 不通过的原因可能有多种,在方法的参数中的message字符串,用以标识不通过的情况 public bool ValidateUser(string loginType, string loginId, string loginPwd) { // 创建Connection 对象 string connString = \ SqlConnection connection = new SqlConnection(connString); int num = 0; // 选员信息的数量 // 查询用的SQL 语句 string sql = \ pwd='\ 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(\数据库中无此记录!\提示信息\ MessageBoxIcon.Information); } } catch (Exception ex) { // 操作出错 MessageBox.Show(\连接数据库出错!\ } finally { // 关闭数据库连接 connection.Close(); } return isExist; } // 根据登录类型,显示相应的窗体 public void ShowUserForm() { MessageBox.Show(\欢迎使用该系统:\ } private void btnCancel_Click(object sender, EventArgs e) { Application.Exit(); } } } (7)保存并构建应用程序。执行应用程序,以验证其工作情况。运行效果如图所示:
登录界面图
练习2:多表查询的应用
问题
创建一个多表查询应用程序,通过编写代码实现数据库操作功能的一般方法。设已创建了一个名为员工工资的Access数据库,其中包括表employee(存放员工基本信息)和表pay(存放员工工资信息)。 程序设计要求:
1) 要求分别从上述两表中取出一些字段组成多表关联。
2) 要求将“应发工资”字段排列在“奖金”字段之后,“扣税”字段之前。“实发工资”为最后一个字段。 3) 要求程序具有按部门进行筛选记录的功能。 指导教师讲解问题说明
分析
数据库中表的设计如下图所示:
employee表设计图
pay表设计图
程序运行结果如下图所示:
显示全部员工工资情况
筛选属于“财务室”的员工工资情况
解决方案:
(2)打开标题为\选择数据源\的ComboBox控件下拉列表,单击\添加项目数据源?\,打开\数据源配置向导\对话框,选中\数据库\,单击\下一步\按钮,打开下一个\数据源配置向导\对话框。可以选择已有的数据库连接,也可以建立新的数据库连接。这里单击\新建连接(C)?\按钮,打开\添加连接\对话框。 (3)当向导提示选择数据库对象时可选择数据库中所有的表。
(4)在“数据源”窗格中右键单击数据源employeeDataSet,在弹出的快捷菜单中执行“使用设计器编辑数据集”命令打开设计器窗口,右键单击employee表下方的“employeeTableAdpter”在弹出的快捷菜单中执行“配置”命令,启动TableAdapter配置向导。界面如图所示:
(1)建立一个新项目。放DataGridView控件到窗体。选中该控件,单击该控件右上角标题为一箭头的按钮,将打开一窗体。
数据源视图
(5)修改SQL语句为如下内容: