C# 中怎么制作登陆界面 用的ACCESS数据库

rooney321 2005-08-23 04:24:10
小弟刚接触C#,现在需要做一登陆界面,用的ACCESS数据库,请问怎么制作登陆页面啊,
我自己的方法是SQL语言查询ID ,然后判断password是否相等
代码如下:
private void Button1_Click(object sender, System.EventArgs e)
{
if((TextBox1.Text!="")&&(TextBox2.Text!=""))
{
string connstr="Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+Server.MapPath(@".\db\db1.mdb")+";Mode=Share Deny None;Persist Security Info=False";OleDbConnection conn=new OleDbConnection(connstr);
conn.Open();
string sql="SELECT id FROM id WHERE id='"+TextBox1.Text+"";
OleDbCommand cmd=new OleDbCommand(sql,conn);
OleDbDataReader dr=cmd.ExecuteReader();
if(dr.Read()==true)
{
if(dr.GetValue(0).ToString()==TextBox2.Text)
{MsgBox("OK");
}
else
{MsgBox("Wrong");
}
}
dr.Close();
}

}
}

//MsgBox类略
但是一直有问题 不能解决 请高人指点啊
PS:登陆用的库名为id 属性有id和password
...全文
850 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
sqsky 2005-08-24
  • 打赏
  • 举报
回复
就是SQL注入嘛
LGame 2005-08-24
  • 打赏
  • 举报
回复
楼上高啊
cdo 2005-08-24
  • 打赏
  • 举报
回复
最好用参数的sql语句,这样就不会出现安全问题了.

要判断能否正确登录,就用:
int count = 0
while(dr.Read())
{
count++; // 你要考虑如果有多个用户使用相同用户名和密码的情况.
}
dr.Close();

if (count >= 1)
{
...
}
emp 2005-08-24
  • 打赏
  • 举报
回复
同意,sql语句要当心安全问题
lusonghe18 2005-08-23
  • 打赏
  • 举报
回复
一看你的代码就知道你接触时间不长,别见怪。
做登录最重要的是要解决你程序的安全性问题所以照你这样写SQL语句应该存在缺陷的。
如果你要把客户端输入的数据与SQL语句连接起来直接执行是很不安全的因为高手们可以很容易的
进入你的系统,譬如你应该避免他人利用你SQL语句字符串连接的特点使SQL语句最终变成select count(*) from table where username = '' and pwd = '' or 1=1 当然or1=1是在PWD中输入的,这还不可怕要是输入";delete table"那就更可怕了,所以我劝各位一定小心你的SQL语句。
okyzx 2005-08-23
  • 打赏
  • 举报
回复
同意 3tzjq(永不言弃)
renyu732 2005-08-23
  • 打赏
  • 举报
回复
http://dotnet.aspx.cc/ShowDetail.aspx?id=1481D80A-F0FD-45E3-A822-94F5BE8C8813
zorou_fatal 2005-08-23
  • 打赏
  • 举报
回复
转到asp.net版吧~
marine12 2005-08-23
  • 打赏
  • 举报
回复
你这个方法不好
string str="select count(*) from id where id='"
+this.TextBox1+"',password='"+this.TextBox2+"'";
OleDbCommand cmd=new OleDbCommand(str,con);
int a=cmd.ExcuteScalar();
然后直接判断a的值,cmd.ExcuteScalar()是返回第一行第一列的值
为0就是没有这个用户,有的话就为1,最简单了
3tzjq 2005-08-23
  • 打赏
  • 举报
回复
你的SQL语句也有问题:
string sql="SELECT Count(*) FROM 你的用户表 WHERE id='"+TextBox1.Text+"'And pwd = '" + TextBox2.Text+"'";
OleDbCommand cmd=new OleDbCommand(sql,conn);
OleDbDataReader dr=cmd.ExecuteReader();
if(dr.Read()==true)
{
if(dr.GetInt32(0) > 0)
{MsgBox("OK");}
else
{MsgBox("Wrong");}
}
else
{MsgBox("None!");}

dr.Close();
loveyzy 2005-08-23
  • 打赏
  • 举报
回复
你首先要学会调试,你这样的问题通过调试很容易解决的,设立断点,然后看其值发生的变化就知道问题在哪了
rooney321 2005-08-23
  • 打赏
  • 举报
回复
忘了说了 是用的ASP.NET WEB应用程序

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧