版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。undefined本文链接:https://blog.csdn.net/weixin_42449444/article/details/90476011
写在前面:
简单地写一下MD5加密存储和C#如何操作Sql Server数据库吧。(注意哦:真的是特别简单地写了一下几个对象的实例化)。
MD5加密存储:
首先要加上这个用于加密的命名空间using System.Security.Cryptography; 实例化MD5对象后先调用ComputeHash方法来将字符串进行加密处理,再用Convert来将字节型数组转化为字符串,这个字符串即为加密后的密码。
代码语言:javascript复制//使用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这个数据库。
代码语言:javascript复制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中建好的,这里不提供建表代码太简单啦 不值一提。)
代码语言:javascript复制SqlCommand command = new SqlCommand("SELECT username,password FROM login_table WHERE username ='" username "' AND password ='" password "'", connection);
③SqlDataReader:创建一个查询一条或多条数据的对象,提供只读单向数据的快速传递。
代码语言:javascript复制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:创建一个本地数据存储对象,其实就是数据在内存区的缓存。
代码语言:javascript复制DataSet ds = new DataSet(); //实例化DataSet对象
⑤SqlDataAdapter:创建一个用于检索和保存数据的对象,可以用来填充DataSet。
代码语言:javascript复制SqlDataAdapter sda = new SqlDataAdapter("SELECT bookid '图书序列号',name '书名',author '作者',publisher '出版商',pubdate '出版时间',ISBN '国际标准书号',price '单价',booknum '库存数量' FROM book_table", connection);
sda.Fill(ds); //向DataSet中填充数据