CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  .NET技术 >  C#

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

楼主rooney321(传说中的MVP------>Most Vainly Person)2005-08-23 16:24:10 在 .NET技术 / C# 提问

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

相关问题

  • C++Buider 对 ACCESS 数据库的问题
  • 用C#打开Access数据库?
  • C#能不能连access数据库?
  • 用ACCESS做C/S结构的数据库
  • 数据库查询问题(ACCESS IN VISUAL C++)
  • c#与数据库Access连接问题
  • C#+ACCESS数据库中字段修改!
  • C# 动态链接Access数据库
  • C\S结构中的界面问题 + 数据库全屏 问题?
  • 100分求一个C#做的好的数据库的界面

关键词

  • asp.net
  • c#
  • 语句
  • 安全
  • 解决
  • sql
  • 登陆
  • dr
  • msgbox
  • textbox

得分解答快速导航

  • 帖主:rooney321
  • 3tzjq

相关链接

  • CSDN .NET频道
  • .NET类图书
  • C#类图书
  • .NET类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo