欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

ADO.NET制做一个登录案例

程序员文章站 2023-11-24 15:11:10
总体思路.根据用户输入的用户名和密码,来判断,和数据库里面存的是不是一样,如果一样就表明登录成功,否则就登录失败。 方案一: 1.select* from 表名 w...

总体思路.根据用户输入的用户名和密码,来判断,和数据库里面存的是不是一样,如果一样就表明登录成功,否则就登录失败。

方案一:
1.select* from 表名 where username="用户输入的用户名" 
2.如果存在 reader.read(),即用户名存在,接着就判断用户输入的密码,和取到的密码(reader.getstring(reader.getoridinal("密码字段")))是不是一样,如果一样就登录成功,否则就登录失败。

方案二: 
select * from 表名 where username="用户输入的用户名" and password="用户输入的密码",如果查得到数据,就登录成功。否则登录失败。 

下面,我们来使用方案一,来做一个登录的案例吧。

这里,为了方便,还是用控制台应用程序吧。
前奏:
我这次要把连接字符串写在配置文件中, 
1.首先我们要添加命名空间的引用:system.configuration; 
2.然后在我们的配置文件appconfig中,的<configuration>节点下面添加连接字符串的相关节点信息。 

<configuration>
<connectionstrings>
 <add name="constr" connectionstring="server=.;database=db_users;uid=sa;pwd=pasword_1"/>
 </connectionstrings>
 <startup> 
<supportedruntime version="v4.0" sku=".netframework,version=v4.5" />
 </startup>
</configuration>

标红颜色的地方,就是我们添加的连接字符串节点信息; 

3.然后我习惯,创建一个dbhelper类,在里面声明一个方法来获取,连接字符串:

using system;
using system.collections.generic;
using system.linq;
using system.text;
using system.threading.tasks;
using system.configuration;//在项目中添加这个的引用,并在这个类里面添加这个命名空间

namespace ado.net登录案例1
{
  public class dbhelper
  {
    public static string getconnectionstrings()
    {
      //使用configurationmanager类,来获取连接字符串的信息。
      return configurationmanager.connectionstrings["constr"].connectionstring;
    }
  }
}

4.这次我依然使用存储过程,创建一个根据用户名查询的存储过程:

if object_id('ins_user','p') is not null 
 drop procedure ins_user
 go
 create procedure ins_user
 @name nvarchar(20)

 as 
 select * from dbo.t_users where t_name=@name
 go 

存储过程

前期的准备工作,做好之后,现在我们来开始写程序,编码实现:
思路:方案一,说了,首先我们当然是让用户输入,用户名和密码,然后根据用户输入的用户名来查询数据库对应的表中,有没有相关数据,如果没有的话,就提示用户名不存在,有的话,就继续判断用户输入的密码是否正确(拿用户输入的密码和数据库对应的密码,进行判断),如果正确,就提示登录成功,否则就提示密码错误。 
*这里我使用参数化查询,来写登录的案例,目的是为了防止sql注入攻击。

using system;
using system.collections.generic;
using system.linq;
using system.text;
using system.threading.tasks;
using system.data;
using system.data.sqlclient;

namespace ado.net登录案例1
{
  class program
  {
    static void main(string[] args)
    {
      //提示用户输入用户名
      console.writeline("请输入用户名:");
      //使用console.readline()接收用户输入的信息
      string username = console.readline();
      //提示用户输入密码
      console.writeline("请输入密码:");
      string password = console.readline();


      //现在就是开始使用ado.net技术,来查询数据库了

      //连接方式访问
      //1.创建连接对象(连接字符串)
      sqlconnection scon = new sqlconnection(dbhelper.getconnectionstrings());

      //2.创建命令对象(并为命令对象设置属性值)
      sqlcommand scmd = new sqlcommand();
      scmd.commandtext = "ins_user";
      scmd.commandtype = commandtype.storedprocedure;
      scmd.connection = scon;

      //3打开连接
      scon.open();


      //设置参数
      scmd.parameters.add(new sqlparameter("@name",username.trim()));

      //4.执行命令
      sqldatareader reader = scmd.executereader(commandbehavior.closeconnection);


      //5处理数据
      if (reader.read())
      {

        if (password.trim().tostring() == reader["t_pwd"].tostring())
        {
          console.writeline("登录成功");
        }
        else
        {
          console.writeline("密码错误");
        }
      }
      else
      {
        console.writeline("用户名不存在");
      }
      //读取器用完一定要关闭
      reader.dispose();
      console.readkey();

    }
  }
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。