SQL Server 2008数据库中的表CLASS(id,name)
我的aspx页面中有一个CreateClass函数:
public void CreateClass(object sender, EventArgs e)
{
string idclass= txtID.Text;
string name= txtName.Text;
string sql="select * From CLASS where id="+idclass;
Datatable class= excute...;
if(class!=null)
{
LabelError.Text="ID class is existed already!";
return;
}
else
{
... write into database...
}
}
构建程序,首先我输入:txtID.Text= "DDD121"
和txtName.Text="Class 2"
它仍有1条记录,在数据库中有id= DDD121
但程序传递if
语句并跳转到else
语句内。为什么?当然,在else
语句中,id = DDD121的新类无法插入到数据库中,但我需要显示错误消息。
我在SQL服务器查询窗口中检查sql查询:select * from CLASS where id='DDD121'
它工作正常,1条记录显示id = DDD121。
尝试调试:
sql= "select * FROM CLASS WHERE ID=DDD121";
class=null;
帮助!!!!是if(class!=null)
检查Datatable是否没有行的正确方法???
答案 0 :(得分:1)
当您尝试调试时,我怀疑您会看到class
不为空,但它是一个空的DataTable。
这应该给你一个关于测试什么而不是class != null
的提示。
是的,SQL注入。但这超出了这一范围。我建议不要忽视它。
如果调试中class
为空,但您确定记录应该存在,我建议您检查一下您是否确实正确连接到数据库,以及是否正确执行了查询。
execute...
肯定不起作用,所以也许在实际代码中出现问题。
啊,确保你把你想要的值放在''之间。否则它赢了;确实工作。 顺便说一下,不这样做与SQL-Injection几乎没有关系。
只需一个提示,一旦你开始工作,而不是在你的文本框中填写DDD121,填写ABC'; DROP TABLE CLASS;并看看会发生什么;)那是SQLinjection。
答案 1 :(得分:0)
if(class!=null && class.Rows.Count>0)
{
LabelError.Text="ID class is existed already!";
return;
}
else
{
... write into database...
}
此代码检查null和空数据表