标题 | 三种操作数据库的途径 |
内容 | 操作数据库可以分这么三种,第一种,直接写硬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 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代码来,可以由数据库管理员或工程师来写,这样,一方面减轻程序员的工作,另一方面也可以使数据库与应用程序保持独立,这样有利于系统的移植与维护。 当然第三种是推荐使用的,好处呢!就是前面所写的。 |
随便看 |
|
在线学习网考试资料包含高考、自考、专升本考试、人事考试、公务员考试、大学生村官考试、特岗教师招聘考试、事业单位招聘考试、企业人才招聘、银行招聘、教师招聘、农村信用社招聘、各类资格证书考试等各类考试资料。