C# 中怎么制作登陆界面 用的ACCESS数据库
小弟刚接触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
问题点数:100、回复次数:12Top
1 楼rooney321(传说中的MVP------>Most Vainly Person)回复于 2005-08-23 16:27:59 得分 0
忘了说了 是用的ASP.NET WEB应用程序Top
2 楼loveyzy(菌哥)回复于 2005-08-23 17:08:23 得分 0
你首先要学会调试,你这样的问题通过调试很容易解决的,设立断点,然后看其值发生的变化就知道问题在哪了Top
3 楼3tzjq(永不言弃)回复于 2005-08-23 17:13:44 得分 100
你的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();
Top
4 楼marine12(副才科)回复于 2005-08-23 17:24:24 得分 0
你这个方法不好
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,最简单了Top
5 楼zorou_fatal(The world and system is even)回复于 2005-08-23 17:45:27 得分 0
转到asp.net版吧~Top
6 楼renyu732(Sysinfo)回复于 2005-08-23 17:46:33 得分 0
http://dotnet.aspx.cc/ShowDetail.aspx?id=1481D80A-F0FD-45E3-A822-94F5BE8C8813Top
7 楼okyzx(Jason)回复于 2005-08-23 17:47:56 得分 0
同意 3tzjq(永不言弃)Top
8 楼lusonghe18(三人行必有我师)回复于 2005-08-23 19:28:10 得分 0
一看你的代码就知道你接触时间不长,别见怪。
做登录最重要的是要解决你程序的安全性问题所以照你这样写SQL语句应该存在缺陷的。
如果你要把客户端输入的数据与SQL语句连接起来直接执行是很不安全的因为高手们可以很容易的
进入你的系统,譬如你应该避免他人利用你SQL语句字符串连接的特点使SQL语句最终变成select count(*) from table where username = '' and pwd = '' or 1=1 当然or1=1是在PWD中输入的,这还不可怕要是输入";delete table"那就更可怕了,所以我劝各位一定小心你的SQL语句。Top
9 楼LGame(JGame)回复于 2005-08-24 00:22:20 得分 0
楼上高啊Top
10 楼sqsky(雨寒)回复于 2005-08-24 00:31:17 得分 0
就是SQL注入嘛Top
11 楼emp(Thinking)回复于 2005-08-24 08:36:40 得分 0
同意,sql语句要当心安全问题Top
12 楼cdo(Everything has a favourable turn)回复于 2005-08-24 08:54:20 得分 0
最好用参数的sql语句,这样就不会出现安全问题了.
要判断能否正确登录,就用:
int count = 0
while(dr.Read())
{
count++; // 你要考虑如果有多个用户使用相同用户名和密码的情况.
}
dr.Close();
if (count >= 1)
{
...
}
Top




