-1

CLASS(id,name)SQL Server 2008 数据库中的表

我的 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 Server 查询窗口中检查了 sql 查询:select * from CLASS where id='DDD121'它工作正常,显示 1 条记录,id=DDD121。

尝试调试:

sql= "select * FROM CLASS WHERE ID=DDD121";
class=null;

帮助!!!!是 if(class!=null)检查Datatable是否没有行的正确方法???

4

2 回答 2

1

当您尝试调试时,我怀疑您会看到它class不是 null,而是一个空的 DataTable。

这也应该给你一个关于要测试什么而不是class != null.

是的,SQL 注入。但这超出了本文的范围。我建议不要忽略它。

如果class在调试中为空,虽然您确定应该存在记录,但我建议检查您是否确实正确连接到数据库以及是否正确执行查询。

execute...绝对不工作,所以可能在实际代码中出现问题。

啊,确保你把你想要的值放在''之间。否则,它确实不会起作用。顺便说一句,不这样做与 SQL 注入几乎没有关系。

只是一个提示,一旦你得到这个工作,而不是在你的文本框中填写 DDD121,填写 ABC';DROP TABLE CLASS; 看看会发生什么;)是 SQLinjection。

于 2013-11-15T09:33:27.280 回答
0
 if(class!=null && class.Rows.Count>0)
    {
        LabelError.Text="ID class is existed already!";
        return;
    }
    else

    {
        ... write into database...
    }

此代码检查 null 和空数据表

于 2013-11-15T09:56:54.820 回答