五、代码实现数据的插入和判断
在用户单击按钮控件时会执行数据插入操作,在数据插入之前就需要对信息进行过滤,示例代码如下所示。
protectedvoidButton1_Click(objectsender,EventArgse)
{
if(Check(TextBox1.Text)||Check(TextBox2.Text)||Check(TextBox4.Text)||
Check(TextBox5.Text)||Check(TextBox6.Text)||Check(TextBox7.Text)) //判断
{
Label8.Text=“用户信息中不能够包含特殊字符如<,>,’,//,\等,请审核“; //输出信息
}
else
{
//注册代码
}
}
上述代码使用了Check函数对文本框控件进行了用户资料的判断,Check函数的实现如下所示。
protectedboolCheck(stringtext) //判断实现
{
if(text.Contains(“<”)||text.Contains(“>”)||text.Contains(“‘”)||
text.Contains(“//”)||text.Contains(“\”)) //检查字串
{
returntrue; //返回真
}
else
{
returnfalse; //返回假
}
}
Check函数定义了基本的判断方式,如果文本框信息中包含“<”,“>”,“’”,“/”,“”等字符串时,该方法将会返回true,否则会返回false。
这也就是说,如果字符串中包含了这些字符,则会返回true。
在Button1_Click函数中就会判断包含非法字符,并进行提示,否则会执行注册代码。
对关键字的过滤是非常必要的,这样能够保证应用程序的完整性并提高应用程序健壮性,同时也对数据库中的完整性进行了保护。
当用户单击按钮控件时,如果对用户进行了非空验证和关键字过滤后,就能够进行数据的插入,用户可以使用ADO.NET进行数据操作,示例代码如下所示。
protectedvoidButton1_Click(objectsender,EventArgse)
{
if(Check(TextBox1.Text)||Check(TextBox2.Text)||Check(TextBox3.Text)||
Check(TextBox4.Text)||Check(TextBox5.Text)||Check(TextBox6.Text)) //检查字串
{
Label8.Text=“用户信息中不能够包含特殊字符如<,>,’,//,\等,请审核“; //输出信息
}
else
{
try
{
SqlConnectioncon=
newSqlConnection(“server=’(local)’;database=’Register’;uid=’sa’;pwd=’sa’”);//建立连接
con.Open(); //打开连接
stringstrsql=
“insertintoregister(username,password,sex,picture,im,information,others,ifisuser)values
(‘”+TextBox1.Text+“‘,’”+TextBox2.Text+“‘,’”+DropDownList1.Text+“‘,’”+
TextBox3.Text+“‘,’”+TextBox4.Text+“‘,’”+TextBox5.Text+“‘,’”+TextBox6.Text+“‘,0)”;
SqlCommandcmd=newSqlCommand(strsql,con); //创建执行
cmd.ExecuteNonQuery(); //执行SQL
Label8.Text=“注册成功,请牢记您的信息“; //提示成功
}
catch
{
Label8.Text=“出现错误信息,请返回给管理员“; //抛出异常
}
}
}
上述代码通过ADO.NET实现了数据的插入,但是上述代码有一个缺点,如果用户注册了一个用户并且名称为abc,当这个用户注销并再注册一个用户名称为abc时,如果依旧将数据插入到数据库则会出现错误。
值得注意的是,这个错误并不是逻辑错误,但是这个错误会造成不同的用户可能登录了同一个用户信息并产生信息错误。
为了避免这种情况的发生,在用户注册前首先需要执行判断,示例代码如下所示。
stringcheck=“select*fromregisterwhereusername=’”+TextBox1.Text+“‘”;
SqlDataAdapterda=newSqlDataAdapter(check,con); //创建适配器
DataSetds=newDataSet(); //创建数据集
da.Fill(ds,“table”); //填充数据集
if(da.Fill(ds,“table”)>0) //判断同名
{
Label8.Text=“注册失败,有相同用户名“; //输出信息
}
else
{
SqlCommandcmd=newSqlCommand(strsql,con); //创建执行对象
cmd.ExecuteNonQuery(); //执行SQL
Label8.Text=“注册成功,请牢记您的信息“; //输出成功
}
在用户注册时,首先从数据库查询出是否已经包含这个用户名的信息,如果包含则不允许用户注册,如果没有,则说明用户是一个新用户,可以进行注册。
本人也是菜鸟一个~~一起努力!
请各位老大指教!
!
谢谢!
!
附带一下代码:
default.aspx.cs
usingSystem;
usingSystem.Collections.Generic;
usingSystem.Linq;
usingSystem.Web;
usingSystem.Web.UI;
usingSystem.Web.UI.WebControls;
usingSystem.Data.SqlClient;
usingSystem.Data;
namespace登录注册
{
publicpartialclassDefault:
System.Web.UI.Page
{
protectedvoidPage_Load(objectsender,EventArgse)
{
if(IsPostBack)
{
Label8.Visible=true;
}
}
protectedboolCheck(stringtext) //判断实现
{
if(text.Contains(“<”)||text.Contains(“>”)||text.Contains(“‘”)||
text.Contains(“//”)||text.Contains(“\”)) //检查字串
{
returntrue; //返回真
}
else
{
returnfalse; //返回假
}
}
protectedvoidButton1_Click(objectsender,EventArgse)
{
if(Check(TextBox1.Text)||Check(TextBox2.Text)||Check(TextBox3.Text)||
Check(TextBox4.Text)||Check(TextBox5.Text)||Check(TextBox6.Text)) //判断
{
Label8.Visible=true;
Label8.Text=“用户信息中不能够包含特殊字符如<,>,’,//,\等,请审核”; //输出信息
}
else
{
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1