第一讲主要是基本介绍了ASP.NET的一些概况。
运行环境:Microsoft Visual Studio 2005
1、基本的数据绑定:
在VS2005中创建一个ASP.NET网站后,使用GridView控件和SqlDataSource控件。在SqlDataSource控件智能标记中选择配置数据源,根据具体情况配置相应的数据源,VS2005和VS2003相比,改进了很多,例如简单的数据绑定基本不用写代码,而且还可以进行分页和排序等处理。
GridView的智能标记中选择相应的数据源,可以选择启用分页和启用排序的功能,还可以选择编辑列,对每一列做进一步处理。或者在GirdView属性栏中的AllowPaging的属性改为true实现分页,而PageSize属性则为每页显示的数量,AllowSorting 属性选择true则实现排序的功能。
2、三种不同方式的登录功能
<1>普通登录:
SqlConnection con = new SqlConnection(@"server=localhost;uid=sa;database=pubs");
string sql = "select count(*) from users where username='" + this.TextBox1.Text + "' and userpass='" + this.TextBox2.Text + "'";
SqlCommand cmd = new SqlCommand(sql,con);
con.Open();
try
{
int result = (int)cmd.ExecuteScalar();
if (result==0)
{
Response.Write("Fail");
}
else
{
Response.Write(sql);
}
}
catch (Exception ex)
{
}
con.Close();
普通登录安全性差,容易受SQL 注入式攻击.....
<2>参数化登录:
SqlConnection con = new SqlConnection(@"server=localhost;uid=sa;database=pubs");
string sql = "select count(*) from users where username=@username and userpass=@userpass";
SqlCommand cmd = new SqlCommand(sql, con);
con.Open();
SqlParameter[] pars = new SqlParameter[2];
pars[0] = new SqlParameter("@username", SqlDbType.VarChar, 20);
pars[0].Value = this.TextBox1.Text;
pars[1] = new SqlParameter("@userpass", SqlDbType.VarChar, 20);
pars[1].Value = this.TextBox2.Text;
foreach (SqlParameter par in pars)
{
cmd.Parameters.Add(par);
}
try
{
int result = (int)cmd.ExecuteScalar();
if (result == 0)
{
Response.Write("Fail");
}
else
{
Response.Write(sql);
}
}
catch (Exception ex)
{
}
con.Close();
<3>存储过程登录:
SqlConnection con = new SqlConnection(@"server=localhost;uid=sa;database=pubs");
SqlCommand cmd = new SqlCommand("Userselect", con); //"Userselect"为存储过程名称
cmd.CommandType = CommandType.StoredProcedure;
con.Open();
SqlParameter[] pars = new SqlParameter[2]; //存储过程中的两个参数
pars[0] = new SqlParameter("@username", SqlDbType.VarChar, 20);
pars[0].Value = this.TextBox1.Text;
pars[1] = new SqlParameter("@userpass", SqlDbType.VarChar, 20);
pars[1].Value = this.TextBox2.Text;
foreach (SqlParameter par in pars)
{
cmd.Parameters.Add(par);
}
try
{
int result = (int)cmd.ExecuteScalar();
if (result == 0)
{
Response.Write("Fail");
}
else
{
Response.Write("OK");
}
}
catch (Exception ex)
{
}
con.Close();
存储过程登录安全性高,而且采用存储过程可实现批命令的执行
附:存储过程定义
CREATE PROCEDURE Userselect
@username varchar(20),
@userpass varchar(20)
as
select count(*) from users where username=@username and userpass=@userpass
GO
posted @ 2008-07-25 18:44
黑色自由 阅读(78)
评论(0) 编辑 收藏