小弟刚接触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

解决方案 »

  1.   

    忘了说了  是用的ASP.NET WEB应用程序
      

  2.   

    你的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();
      

  3.   

    你这个方法不好
    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,最简单了
      

  4.   

    http://dotnet.aspx.cc/ShowDetail.aspx?id=1481D80A-F0FD-45E3-A822-94F5BE8C8813
      

  5.   

    一看你的代码就知道你接触时间不长,别见怪。
    做登录最重要的是要解决你程序的安全性问题所以照你这样写SQL语句应该存在缺陷的。
    如果你要把客户端输入的数据与SQL语句连接起来直接执行是很不安全的因为高手们可以很容易的
    进入你的系统,譬如你应该避免他人利用你SQL语句字符串连接的特点使SQL语句最终变成select count(*) from table where username = '' and pwd = '' or 1=1 当然or1=1是在PWD中输入的,这还不可怕要是输入";delete table"那就更可怕了,所以我劝各位一定小心你的SQL语句。
      

  6.   

    同意,sql语句要当心安全问题
      

  7.   

    最好用参数的sql语句,这样就不会出现安全问题了.要判断能否正确登录,就用:
    int count = 0
    while(dr.Read())
    {
    count++; // 你要考虑如果有多个用户使用相同用户名和密码的情况.
    }
    dr.Close();if (count >= 1)
    {
     ...
    }