首页 > 网站 > 建站经验 > 正文

三种操作数据库的途_径

2019-11-02 15:27:37
字体:
来源:转载
供稿:网友

   操作数据库可以分这么三种,第一种,直接写硬SQL代码,不要参数,第二种,直接写硬代码,要参数,第三种,调用存储过程。

  我们以一个登录模块为例,现在页面

好听网名[www.la240.com/html2017/1/15/]
有两文本框,一按纽,实现验证用户名密码的功能。第一种方法主要代码如下:

  SqlConnection conn =new SqlConnection

  ("server=;database=news2;uid=sa;pwd=");

  conn.Open();

  SqlCommand cmd=new SqlCommand();

  cmd.CommandText="select count(*)from users

  where name='"+this.TextBox1.Text+"'and pwd='"+this.TextBox2.Text+"'";cmd.Connection=conn;int i=(int)cmd.ExecuteScalar();Response.Write(i.ToString());if(i==1){Response.Redirect("add.aspx");}else{Label1.Text="error!"}

  第二种途径

  SqlConnection conn =new SqlConnection("server=;database=news;uid=sa;pwd=");

  conn.Open();//打开数据库

  SqlCommand cmd=new SqlCommand();//建立命令对象

  cmd.CommandText="select count(*)from users where and ";

  cmd.Connection=conn;//设置连接

  SqlParameter p= new SqlParameter("@name",SqlDbType.Char,10);

  //定义参数

  p.Value=this.TextBox1.Text;

  cmd.Parameters.Add(p);//添加参数到集合

  p= new SqlParameter("@pwd",SqlDbType.Char,10);

  p.Value=this.TextBox2.Text;

  cmd.Parameters.Add(p);

  int i=(int)cmd.ExecuteScalar();

  if(i==1)

  {

  Response.Redirect("add.aspx");}

  else

  {

  Label1.Text="error!"

  }

  第三种途径

  SqlConnection conn =new SqlConnection("server=;database=news;uid=sa;pwd=");

  conn.Open();//打开数据库

  SqlCommand cmd=new SqlCommand();//建立命令对象

  cmd.CommandText=" checkLogin";//设置命令文本

  cmd.CommandType=CommandType.StoredProcedure;

  //设置文本类型

  cmd.Connection=conn;//设置连接

  SqlParameter p= new SqlParameter("@name",SqlDbType.Char,10);

  //定义参数

  p.Value=this.TextBox1.Text;

  cmd.Parameters.Add(p);//添加参数到集合

  p= new SqlParameter("@pwd",SqlDbType.Char,10);

  p.Value=this.TextBox2.Text;

  cmd.Parameters.Add(p);

  int i=(int)cmd.ExecuteScalar();

  if(i==1)

  {

  Response.Redirect("add.aspx");}

  else

  {

  Label1.Text="error!"

  }

  接下来对这三种方法做分析:

  第一方法不能防范SQL注入式方式攻击,比如在第一个文本框输入asd'or's'='s 第二个同样输入asd'or's'='s ,可以发现成功通过验证。

  第二种直接写硬SQL代码,事实上不是每个人都能写出优良的SQL代码来,可以由数据库管理员或工程师来写,这样,一方面减轻程序员的工作,另一方面也可以使数据库与应用程序保持独立,这样有利于系统的移植与维护。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表