C#:登录界面、账号注册及密码修改

您所在的位置:网站首页 绅士阁怎么注册账号和密码 C#:登录界面、账号注册及密码修改

C#:登录界面、账号注册及密码修改

2024-07-09 08:52| 来源: 网络整理| 查看: 265

这是所有的界面名,今晚有个傻室友对这个名字有疑问,我还是贴上来吧。

 

 

1、登陆界面

1.1

1.2、代码段

public partial class Form1_login : Form { //定义连接数据库的字符串 public static string connStr = "User Id=mathilda;Password=nishizhu951; Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST= DESKTOP-ELVTTAI)(PORT=1521)))" + " (CONNECT_DATA =(SERVER = DEDICATED) (SERVICE_NAME = XE)))"; public Form1_login() { InitializeComponent(); } //整个窗体 private void Form1_login_Load(object sender, EventArgs e) { } //登录按钮——连数据库 private void button_login_Click(object sender, EventArgs e) { //建立数据新链接 OracleConnection conn = new OracleConnection(); try { conn.ConnectionString = connStr; conn.Open(); //打开指定连接,打开数据库 MessageBox.Show(conn.State.ToString());//测试是否打开连接 OracleCommand cmd = conn.CreateCommand();//oracle命令类创建对象 cmd.CommandText = String .Format("select * from manage");//从manage表中读取管理员学号/工号及登录密码 OracleDataReader ord = cmd.ExecuteReader();//执行该oracle语句 while(ord.Read()) { MessageBox.Show(ord.GetOracleValue(0).ToString() +" 数据库学号"); MessageBox.Show(textBox_login_swno.Text + " 输入学号"); //判断是否读到学号!!! if(ord.GetOracleValue(0).ToString() == textBox_login_swno.Text) //manage表中有该学号/工号 { MessageBox.Show(ord.GetOracleValue(1).ToString() + " 数据库密码"); MessageBox.Show(textBox_login_pwd.Text+" 读取密码"); if (ord.GetOracleValue(1).ToString() != textBox_login_pwd.Text)//比对该学号对应的密码与输入的密码 { MessageBox.Show("登陆成功!"); //若相等,提示登录成功,进入操作界面,如下 Form2_operate frm = new Form2_operate(); //跳转进入操作界面——Form2_operate frm.Show(); this.Hide(); } else MessageBox.Show("密码输入有误!请重新输入。");//提示密码有误,请重新输入 } } ord.Close(); } catch (Exception ex) { MessageBox.Show(ex.Message.ToString()); } finally { conn.Close(); } } /*以下为其他按钮,暂时还未实现,等待修改 //注册按钮——连数据库 private void button_signin_Click(object sender, EventArgs e) { Form3_signin frm = new Form3_signin(); frm.Show(); this.Hide(); //跳转到注册界面操作 } //修改密码按钮——连数据库 private void button_alterpwd_Click(object sender, EventArgs e) { Form4_alterpwd frm = new Form4_alterpwd(); frm.Show(); this.Hide(); //跳转到写改密码界面操作 } //退出按钮 private void button_cancel_Click(object sender, EventArgs e) { button_login.Text = " "; button_cancel.Text = null; button_login.Focus(); this.Close(); } */ }

4.11:过来更新下,找到那个密码部分错误的原因啦!现在可以改为==啦

其实这段代码没有错,错在数据库里的字符类型......

 

当我用messagebox将两个密码输出时,是这样的

 明明是一模一样的内容,怎么后面空出来一大段!!!!!!   

 

 

后来才发现我数据库里所有的数据类型用的都是char,而不是varchar,我们来看下两者的区别

参考资料来源:https://www.cnblogs.com/Berryxiong/p/6248464.html

在建立数据库表结构的时候,为了给一个String类型的数据定义一个数据库的数据库类型,一般参考的都是char或者varchar,这两种选择有时候让人很纠结,今天想总结一下它们两者的区别,明确一下选择塔门的理由。

    (1) char的长度是不可变的;

       而varchar的长度是可变的,也就是说,定义一个char[10]和varchar[10],如果存进去的是‘csdn’,那么char所占的长度依然为10,除了字符‘csdn’外,后面跟六个空格,而varchar就立马把长度变为4了,取数据的时候,char类型的要用trim()去掉多余的空格,而varchar是不需要的,尽管如此,char的存取数度还是要比varchar要快得多,因为其长度固定,方便程序的存储与查找;但是char也为此付出的是空间的代价,因为其长度固定,所以难免会有多余的空格占位符占据空间,可谓是以空间换取时间效率,而varchar是以空间效率为首位的。

    (2)char的存储方式是,对英文字符(ASCII)占用1个字节,对一个汉字占用两个字节;而varchar的存储方式是,对每个英文字符占用2个字节,汉字也占用2个字节,两者的存储数据都非unicode的字符数据。

就是这个字符类型,导致我登录必须要密码不一致才能登录......

 

1.3、登陆成功,啦啦啦~

2、注册按钮

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 Oracle.ManagedDataAccess.Client; namespace Graduation { public partial class Form3_signin : Form { public Form3_signin() { InitializeComponent(); } private void Form3s_signin_Load(object sender, EventArgs e) { } //注册按钮 private void button_f3_yes_Click(object sender, EventArgs e) { OracleConnection conn = new OracleConnection(); bool flag = true; try { conn.ConnectionString = Form1_login.connStr; conn.Open(); //打开指定连接,打开数据库 //MessageBox.Show(conn.State.ToString()); //测试是否打开连接 OracleCommand cmd = conn.CreateCommand(); cmd.CommandText = String.Format("select * from manage"); OracleDataReader ord = cmd.ExecuteReader(); while (ord.Read()) { //MessageBox.Show(ord.GetOracleValue(0).ToString()+" 数据库学号\n" //+textBox_signin_swno.Text+" 输入学号"); //判断是否读到学号!!! if (ord.GetOracleValue(0).ToString() == textBox_signin_swno.Text) //manage表中有该学号/工号 { MessageBox.Show("该账号已被注册,请重新输入账号!"); flag = false;//标记有无账号重复 } } if (flag)//flag = true无账号重复,可以注册 { cmd.CommandText = String.Format("insert into manage values('{0}','{1}')", textBox_signin_swno.Text, textBox_signin_pwd.Text); ord = cmd.ExecuteReader(); MessageBox.Show("账号注册成功!"); } //else // MessageBox.Show("读取数据失败!"); } catch (Exception ex) { MessageBox.Show(ex.Message.ToString()); } finally { conn.Close(); } } //返回按钮 private void button_f3_return_Click(object sender, EventArgs e) { Form1_login frm = new Form1_login(); frm.Show(); this.Hide(); } } }

效果是这样的

 

 

关于VS2012连接oracle数据库,请转到https://blog.csdn.net/qq_35591140/article/details/89173252



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3