当前位置: 移动技术网 > IT编程>开发语言>.net > ADO.NET制做一个登录案例

ADO.NET制做一个登录案例

2017年12月12日  | 移动技术网IT编程  | 我要评论

n0882,大冠军杯赛程,环保打包带

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

方案一:
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();

    }
  }
}

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

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网