C#操作Sql Server数据库以及MD5加密存储

正文索引 [隐藏]

写在前面:

嘤嘤嘤 我们班有位弗兰的小哥哥看过我写的数据库大作业界面之后(登录界面如图,是不是感觉我弄的这个垃圾界面和早期的QQ登录界面有一点点像😂QQ2010以前),问我为什么没有把数据库大作业代码更新到博客上面。。。(小声哔哔:其实我一开始并没打算把数据库大作业的代码写到博客上的)。哈哈哈我就简单地写一下MD5加密存储和C#如何操作Sql Server数据库吧。(注意哦:真的是特别简单地写了一下几个对象的实例化)。

MD5加密存储:

嘤…这部分是今天上数据库实验课的时候,在魏老师的指导下完成哒。(是不是觉得有一点神奇?数据库老师教你操作C#😂)。

首先要加上这个用于加密的命名空间using System.Security.Cryptography;   实例化MD5对象后先调用ComputeHash方法来将字符串进行加密处理,再用Convert来将字节型数组转化为字符串,这个字符串即为加密后的密码。

//使用MD5加密明文密码
MD5 md5 = new MD5CryptoServiceProvider();  //实例化MD5对象
byte[] s = md5.ComputeHash(Encoding.UTF8.GetBytes(password));   //调用ComputeHash方法将字符串进行加密处理
password = Convert.ToBase64String(s);      //将字节类型的数组转换为字符串,得到加密后的密码

MD5是具有不可逆性的,一旦加密之后就无法再进行解密。我们一般是在账号注册时将密码通过MD5加密后存入数据库,新注册账号之后。我们打开sql server查询login_table表(提前建好的,建表代码略),可以看到存取的密码不再是明文而是经过MD5加密后的字符串。

在账号登录时我们需要判断输入的密码是否正确,而MD5加密是不可逆的 也就意味着它无法解密,所以我们需要将用户输入的密码再加密一次然后再与数据库中已加密存储的密码进行比对,如果比对结果一致则登陆成功。

C#操作Sql Server的几个对象:

首先要加上命名空间using System.Data.SqlClient; 我用到的对象其实也就是这几个,先拿用户登录界面这部分来举例子吧:

①SqlConnection:创建数据库连接对象。下面这段代码表示以sa的身份与sql server建立连接,并指定到Library这个数据库。

SqlConnection connection = new SqlConnection("Data Source=.;Initial Catalog=Library;User ID=sa;Password=sql123");  //实例化连接对象
connection.Open();   //打开连接,使用完后记得connection.Close();

②SqlCommand:执行SQL语句对象。下面这段代码表示用SqlCommand来执行SQL语句:SELECT userid,password FROM login_table WHERE username = ‘(用户输入的username)’ AND password = ‘(用户输入的password)’。判断用户输入的账号密码是否正确。特别需要注意单引号不能舍去,不然不符合SQL语法。(login_table表是在sql server中建好的,这里不提供建表代码太简单啦 不值一提。)

SqlCommand command = new SqlCommand("SELECT username,password FROM login_table WHERE username ='" + username + "' AND password ='" + password + "'", connection);

③SqlDataReader:创建一个查询一条或多条数据的对象,提供只读单向数据的快速传递。

SqlDataReader data = command.ExecuteReader();
data.Read();      //使用完后记得要data.Close();
if (data.HasRows)    //HasRows用来判断查询结果中是否有数据,返回值为true或false
{
    MessageBox.Show("登录成功!", "通知", MessageBoxButtons.OK, MessageBoxIcon.Asterisk); //登录成功
    data.Close();   //关闭SqlDataReader对象
    connection.Close();  //关闭连接
    this.Visible = false;   //隐藏登录窗体
    new Form3().ShowDialog();   //打开管理员界面
}
else
{
   MessageBox.Show("登录失败!", "警告", MessageBoxButtons.OK, MessageBoxIcon.Error);
}

到这里 登录操作就写完了啦。下面再简单地写一下从sql server中读取某张表的数据信息,就拿借书办理这个界面的查询书籍列表为例吧。

④DataSet:创建一个本地数据存储对象,其实就是数据在内存区的缓存。

DataSet ds = new DataSet();   //实例化DataSet对象

⑤SqlDataAdapter:创建一个用于检索和保存数据的对象,可以用来填充DataSet。

SqlDataAdapter sda = new SqlDataAdapter("SELECT bookid '图书序列号',name '书名',author '作者',publisher '出版商',pubdate '出版时间',ISBN '国际标准书号',price '单价',booknum '库存数量' FROM book_table", connection);
sda.Fill(ds);   //向DataSet中填充数据

嗯,这篇博客就只是特别简单地写了一下而已。如果有不懂的可以扣扣私我(小声哔哔 虽然我也不一定会)一起加油呀!!!

————————————————2019.05.26更新—————————————————

玩了一个多小时Photoshop之后,把登录界面改成了这样子:(为了更直观地看出登录界面的大小,我放了张桌面截图)。