操作数据库的三种途径

操作数据库可以分这么三种,第一种,直接写硬SQL代码,不要参数,第二种,直接写硬代码,要参数,第三种,调用存储过程。
我们以一个登录模块为例,现在页面有两文本框,一按纽,实现验证用户名密码的功能。第一种方法主要代码如下:
                 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 name=@name and pwd=@pwd";
   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=" checkL ogin ";// 设置命令文本
                    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代码来,可以由数据库管理员或工程师来写,这样,一方面减轻程序员的工作,另一方面也可以使数据库与应用程序保持独立,这样有利于系统的移植与维护。
当然第三种是推荐使用的,好处呢,就是前面所写的。
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值