手机站
网通分站
电信主站
密 码:
用户名:
当前位置 : 主页>网络编程>Mysql>列表

三种操作数据库的途径

来源:互联网 作者:west263.com 时间:2008-02-23
西部数码-全国虚拟主机10强!40余项虚拟主机管理功能,全国领先!双线多线虚拟主机南北访问畅通无阻!免费赠送企业邮局,.CN域名,自助建站480元起,免费试用7天,满意再付款! P4主机租用799元/月.月付免压金!

  操作数据库能够分这么三种,第一种,直接写硬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=" 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代码来,能够由数据库管理员或工程师来写,这样,一方面减轻程式员的工作,另一方面也能够使数据库和应用程式保持单独,这样有利于系统的移植和维护。

  当然第三种是推荐使用的,好处呢!就是前面所写的。


文章整理:西部数码--专业提供域名注册虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!