本期概述
前几期为了方便登录系统,我们手动的在数据库里添加了用户名和密码,并没有实现在系统中进行用户注册.那么,这一期我们一起来实现下用户注册功能.
原理
原理很简单, 首先判断用户名是否已经存在于数据库中, 执行sql select语句将获取文本框中的用户名,然后通过SqlDataReader对数据库里的数据进行逐行读取并判断数据库中是否已存在相同的用户名.如果存在,则禁止注册;如果不存在,则对用户输入的密码以及密码确认分别进行判断,如果都满足条件(2次密码输入相同等),则执行SQL插入语句,将注册的用户名和密码插入数据库.
首先,我们需要在 系统主界面 增加一个跳转到 用户注册窗体 的按钮.
用户注册name: tsbRegistration
在该按钮的单击事件下 添加如下代码(用于窗体跳转).
1 2 3 4 5 6 7 8 9 private void tsbRegistration_Click(object sender, EventArgs e) { //new一个 用户注册窗体对象 FrmRegistration registration = new FrmRegistration(); //显示 用户注册窗体 registration.Show(); //隐藏当前窗体(主界面) this.Hide(); }
之后,我们来设计下 用户注册 窗体
新建一个用户注册窗体 FrmRegistration.cs 界面设计如下
文本框 用户名name:txtUid 密码name:txtPwd 密码确认name:txtPwdConfirm
文本框右边的用户密码输入提示label框 用户名提示name:lblUidMsg 密码提示name:lblPwdMsg 密码确认name:lblPwdConfirmMsg
按钮 注册name:btnOK 返回name:btnBack
用户注册窗体代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.Configuration; using System.Data.SqlClient; /******************************************************* ** 作者: SoFlash - 博客园 http://www.cnblogs.com/longwu ** 描述: FrmRegistration.cs 用户注册窗体 ******************************************************/ namespace 电影记录管理系统 { public partial class FrmRegistration : Form { public FrmRegistration() { InitializeComponent(); } //连接字符串, 获取配置文件App.config里的字符串"str" static string connStr = ConfigurationManager.ConnectionStrings["str"].ConnectionString; private void btnOK_Click(object sender, EventArgs e) { //否则判断 当前用户名在数据库中是否存在 //使用sql select语句 按 用户文本框中的文本内容 来选取数据库中的用户名 string sql = "select MUserName from MovieAccount where MUserName='" + txtUid.Text + "'"; //新建SQL 数据库连接 SqlConnection conn = new SqlConnection(connStr); //使用SQL cmd指令来装载 sql查询语句和数据库连接 SqlCommand cmd = new SqlCommand(sql, conn); //执行操作前 需要打开数据库连接 conn.Open(); //使用SqlDataReader 对cmd 执行读取指令的数据 进行逐行读取 SqlDataReader sdr = cmd.ExecuteReader(); //如果读到数据了,说明 数据库中已存在 文本框中输入的用户名 if (sdr.Read()) { //如果读到相同的用户名 则提示 用户名已存在 lblUidMsg.Text = "用户名已存在,请重新输入!"; return; } //如果用户名不存在 则判断下用户名密码是否为空 else if (txtUid.Text.Trim() == "") { //如果用户名 不为空, 将提示语句赋给label框 并在窗体上 lblUidMsg.Text = "用户名不能为空!"; } //判断密码是否为空 else if (txtPwd.Text.Trim() == "") { //同理 lblPwdMsg.Text = "密码不能为空!"; //同时清除 用户名 提示框的内容 lblUidMsg.Text = ""; } //判断再次输入密码是否为空 else if (txtPwdConfirm.Text.Trim() == "") { //同理 lblPwdConfirmMsg.Text = "验证密码不能为空!"; //同时清除 用户名 提示框 和 第一次密码输入提示框的内容 lblUidMsg.Text = ""; lblPwdMsg.Text = ""; } //判断2次密码输入是否相同 else if (txtPwd.Text.Trim() != txtPwdConfirm.Text.Trim()) { //同理 lblPwdMsg.Text = "2次密码必须一样!"; lblPwdConfirmMsg.Text = "请重新输入!"; return; } else //如果通过上述检测,则进行账户 密码插入数据库操作 { //清空上面所有label框的提示 lblUidMsg.Text = ""; lblPwdMsg.Text = ""; lblPwdConfirmMsg.Text = ""; //如果 用户名是否存在于 数据库判断完了 则关闭数据库连接(节省资源) conn.Close(); //使用sql 数据插入语句 string sqlInsert = "insert into MovieAccount(MUserName,MUserPwd) values(@MUserName,@MUserPwd)"; //使用1个SQL参数数组 来装载 需要插入的数据 SqlParameter[] param = { new SqlParameter("@MUserName",txtUid.Text), new SqlParameter("@MUserPwd",txtPwd.Text) }; //使用 SQL数据库连接 SqlConnection connInsert = new SqlConnection(connStr); //使用SQL command 指令来装载 SQL查询语句和SQL数据库连接 SqlCommand cmdInsert = new SqlCommand(sqlInsert, connInsert); //再次打开数据连接 执行插入数据操作 connInsert.Open(); //使用cmd指令 添加所有参数 cmdInsert.Parameters.AddRange(param); //定义一个整型变量 用于接受 cmd的 执行查询指令(cmd的ExcuteNonQuery()方法返回值为一个整型) int n = cmdInsert.ExecuteNonQuery(); //判断该值是否为空, 如果为空, 说明插入数据失败 if (n == 0) { MessageBox.Show("注册失败!,请重新输入"); //插入失败就不再继续运行,返回 return; } else { //否则 数据插入成功 MessageBox.Show("注册成功!"); } //关闭数据库连接 connInsert.Close(); } } //返回主窗体 private void btnBack_Click(object sender, EventArgs e) { //new一个主窗体对象 FrmMain main = new FrmMain(); //跳转到主窗体 main.Show(); //隐藏当前窗体 this.Hide(); } } }
代码写好了,我们来测试下 用户注册功能.
这样,我们的用户注册功能就完成了. 下一期,我们将共同学习下信息管理系统中最常见的功能-数据搜索.
附上源代码
MovieRecordManagementSystem05.zip
转自:https://www.cnblogs.com/longwu/archive/2011/10/22/2220937.html