学习笔记——数据库命令对象的应用
1、 数据库建表如何加密:采用哈希函数散列的方式将密码进行加密,此过程不可逆.
插入数据:
--创建表;
----用户表;
CREATE TABLE tb_User
(No
CHAR(10)
NOT NULL
PRIMARY KEY
,Password
VARBINARY(128)
NOT NULL);
INSERT tb_User
(No,Password)
VALUES
('3140707001',HASHBYTES('MD5','7001'));
用户登录密码时也将密码进行散列,判断密码是否输入正确
2、 2.1——2.4实现命令(拼接方法)------登录
【代码】
设置连接:
SqlConnection sqlConnection = new SqlConnection();
sqlConnection.ConnectionString =
"Server=(local);Database=EduBaseDemo;Integrated Security=sspi";
SqlCommand sqlCommand = new SqlCommand();
sqlCommand.Connection = sqlConnection;
读取写入的账号密码:
sqlCommand.CommandText = //指定SQL命令的命令文本;命令文本由字符串拼接而成;
"SELECT COUNT(1) FROM tb_User"
+ " WHERE No='" + this.txb_UserNo.Text.Trim() + "'" //将文本框的文本清除首尾的空格后,拼接至命令文本中;
+ " AND Password=HASHBYTES('MD5','" + this.txb_Password.Text.Trim() + "');";
sqlConnection.Open();
int rowCount = (int)sqlCommand.ExecuteScalar(); //调用SQL命令的方法ExecuteScalar来执行命令,并接受单个结果(即标量);
//执行标量的返回结果类型为object,可通过强制类型转换,转为整型;
sqlConnection.Close();
if (rowCount == 1)
{
MessageBox.Show("登录成功。"); }
else
{
MessageBox.Show("用户号/密码有误,请重新输入!"); //
);
采用拼接连接数据库的方法容易出现漏洞,当不法分子在密码框中输入“ ‘) or 1=1;-- ”
就可以登录成功 ,此为注入式攻击,可用messagebox框查看
【代码】
MessageBox.show(sqlCommand.CommandText);
为了安全起见,我们采用SQL参数用法
【代码】
sqlCommand.CommandText =
"SELECT COUNT(1) FROM tb_User WHERE No=@No AND Password=HASHBYTES('MD5',@Password);"; //指定SQL命令的命令文本;命令文本包含参数;
#region SQL参数用法1
SqlParameter sqlParameter = //声明SQL参数
sqlCommand.Parameters.AddWithValue("@No", this.txb_UserNo.Text.Trim()); //调用方法AddWithValue向SQL命令的参数集合添加参数的名称、值,同时实例化SQL参数;
sqlParameter.SqlDbType = SqlDbType.Char; //设置SQL参数对应的SQL Server数据类型;
sqlParameter.Size = 10; //设置SQL参数的长度;
#endregion
#region SQL参数用法2
sqlCommand.Parameters.AddWithValue("@Password", this.txb_Password.Text.Trim()); //直接调用方法AddWithValue向SQL命令的参数集合添加参数的名称、值;
sqlCommand.Parameters["@Password"].SqlDbType = SqlDbType.VarChar; //通过参数名称访问SQL参数,并将密码参数的类型设为变长字符串;
//SQL参数能自动识别类型;若参数值为字符串,则类型自动设为NVARCHAR,且可在执行时自动转换;但对于相同密码,VARCHAR/NVARCHAR类型所获得的散列值不同,故需手动将SQL参数类型统一设为VARCHAR;
#endregion
这种方法无论无法分子输入什么字符到密码框中,都将作为一个参数与数据库中的密码进行匹配,密码正确则登陆成功,反之登录失败 。
3、 数据库访问公共类
当我们将自己的数据库移动到另一台计算机上时,我们所连接的很多数据库将很容易出错,我们可以采取将数据库连接写入到配置文件里:
(1)创建应用程序配置文件(app.config)
记得创建


(2)
(3)第三步:在应用程序中读取连接字符串
右击解决方案中的”引用:->添加引用
static string connString =
System.Configuration.ConfigurationManager.ConnectionStrings["ConnStri
ng"].ConnectionString;
4、写入——注册

【异常错误】这种方法,当用户使用已存在的账号进行注册时,系统会以一种用户不理解的方式反馈,如下:

当我们加入如下代码时,系统将会告知用户哪里出了问题:
所以当我们注册使用已存在的账号时:


浙公网安备 33010602011771号