登录Sql Server及参数

用户登录:

如图,建立一个登录窗体

连接SQLServer;

利用SqlCommand类的构造方法创建SqlCommand对象用于执行具体的SQL语句,如修改、更新、删除等。步骤如下:

1、创建SqlCommand对象:

SqlCommand sqlcommand=new SqlCommand();

2、将sqlcommand.Connection连上已创建的sqlconnection:

sqlcommand.Connection = sqlConnection; 

3、 定义SQL语句,指定SQL命令的命令文本;命令文本由字符串拼接而成:

sqlCommand.CommandText =                                                                          ​"SELECT COUNT(1) FROM tb_User"

               + " WHERE No='" + this.txb_UserNo.Text.Trim() + "'"                      

               + " AND Password=HASHBYTES('MD5','" + this.txb_Password.Text.Trim() + "');";

" + this.txb_UserNo.Text.Trim() + "是将文本框的文本清除首尾的空格后,拼接至命令文本中;  ‘’ 因为文本内容为字符类型,因而要加上单引号。

4、 采用SqlConnection的ExecuteScalar方法来表明用户名和密码是否正确。
ExecuteScalr:执行查询并返回结果中第一行第一列的指,其值为object类型。
打开连接,并定义一个整型变量rowCount,来存放object类型强制转换的值。
int rowCount = (int)sqlCommand.ExecuteScalar();  
如果rowCount=1,则登录成功,若为0,则不存在该用户,登录失败。
整合代码如下:
参数:
"SELECT COUNT(1) FROM tb_User"
               + " WHERE No='" + this.txb_UserNo.Text.Trim() + "'"                      
               + " AND Password=HASHBYTES('MD5','" + this.txb_Password.Text.Trim() + "');";
密码有可能被篡改。
使用参数可以解决该问题,将SQL语句改为:
"SELECT COUNT(1) FROM tb_User WHERE No=@No AND Password=HASHBYTES('MD5',@Password);";
注:指定SQL命令的命令文本,命令文本包含参数;
sqlCommand.Parameters.AddWithValue("@No", this.txb_UserNo.Text.Trim());                     
sqlCommand.Parameters.AddWithValue("@Password", this.txb_Password.Text.Trim());
注:向SQL命令的参数集合添加参数的名称、值; sqlCommand.Parameters["@Password"].SqlDbType = SqlDbType.VarChar;    
注:将密码参数的类型设为变长字符串;                
posted @ 2017-10-12 23:58  奔跑吧菜鸟  阅读(303)  评论(0编辑  收藏  举报