这是所有的界面名,今晚有个傻室友对这个名字有疑问,我还是贴上来吧。
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