与数据库持勾,检查用户名密码问题(怎样判断是否在数据库中取到了值?)

drag2003 2004-04-07 01:37:46
private void button1_Click(object sender, System.EventArgs e)
{

string username1 =textBox1.Text;
string password1 =textBox2.Text;
string query=" WHERE username= "+"'"+"username1"+"' "+"and"+"password="+"'"+password1+"'" ;

sqlDataAdapter1.SelectCommand.CommandText="SELECT username FROM t_manager"+query;
//怎么实现呀----------------------------------------
if( )
//--------------------------------------------------
{ MessageBox.Show("您输入的用户名密码不正确,请重新输入!","提示");
this.textBox1.Focus();
}

this.close();

}


/*我的想法是这样的:用户输入 username1 与password1 从数据库的t_manager表中取用户名=username1且密码=password1的记录,要是有此记录,则表示用户输入正确,要是没有此记录,则表示输入错误。
现在不知道怎样对取出的结果进行判断有无,即是否取到了记录。请教大家。
*/
...全文
47 点赞 收藏 12
写回复
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
ibbcall 2004-04-13
如果考虑安全性,简单的解决这样做可不可以:

储存到数据库时用户名和密码时进行一个简单的算法加密,用户录入的用户名和密码后,用同样的算法对其进行加密,两次加密得出的结果应是一样的,在Sql中以加密码进行比较。这种方法可以屏避掉在用户名中或密码中掺杂Sql片断的问题。
回复
eTopFancy 2004-04-07
别人可以输入用户名或者用户密码为 myname' or 1=1 or 'a'='b
sql: select username='myname' or 1=1 or 'a'='b' from person
回复
drag2003 2004-04-07
为什么呀,请说细些,是不是在提交过程中易被偷窃?那么怎样较好?
回复
chenlixin007 2004-04-07
同意lhx1977(清水无鱼) ,这种检验方式可不好,有漏洞的!!!
回复
ibbcall 2004-04-07
你可以这样来实现:

1. sqlDataAdapter1.SelectCommand.CommandText="SELECT username FROM t_manager"+query; 这一句改为:sqlDataAdapter1.SelectCommand.CommandText="SELECT count(*) FROM t_manager"+query;

2. if判断为:
if(Convert.ToInt32(sqlDataAdapter1.SelectCommand.ExecuteScalar().ToString()==0)

也就是说,查询符合此用户名和密码的记录条数,如条数为0,则用户名密码不正确;条数大于0,则用户名密码正确。
回复
drag2003 2004-04-07
好像对了,不好意思, 我将
dr=comm.ExecuterReader();写成dr=Executer.ExecuteNonQuery ()
了。
回复
drag2003 2004-04-07
二楼和四楼的,你们这样都提示出错,

就在 dr=comm.ExecuterReader(); 这句上。

信息一样,大致是说不能将隐形int转换为sqlDataReader , 我想应该是类型不匹配,
回复
Strayman 2004-04-07
应该根据数据库的应用程序角色来登录。
回复
hychieftain 2004-04-07
用Command
SqlCommand comm=new SqlCommand(query,conn);
SqlDataReader dr=comm.ExecuteReader();
if (!dr.Read())
{
MessageBox.Show("您输入的用户名密码不正确,请重新输入!","提示");
}
回复
Firestone2003 2004-04-07
sqlDataAdapter1.SelectCommand.ExecuteNonQuery ()
执行一下!
你这段程序没有对数据库操作!
回复
李洪喜 2004-04-07
System.Data.SqlClient.SqlDataReader rd ;
rd = Your_cmd.ExecuteReader();
if (rd.HasRows)
{
rd.Read();
}
提示,你这种方式登录,不太安全。
最好改一下。
回复
drag2003 2004-04-07
果然,看来安全问题很大呀,多谢提醒。
回复
发动态
发帖子
C#
创建于2007-09-28

10.4w+

社区成员

.NET技术 C#
申请成为版主
社区公告

全世界最好的语言,没有之一.