ASP.net c#简单查询参数问题

时间:2011-01-28 16:57:15

标签: c# asp.net parameters parameter-passing

        // Add into DB
        using (tblArtworkTemplatesTableAdapter tblAdapter = new tblArtworkTemplatesTableAdapter())
        {
            tblAdapter.Insert(DateTime.Now, "@specID");
            "@specID" = int.Parse(lstChooseSpec.SelectedValue)
        }

我知道代码是错的,只是为了说明我的目标,我如何对输入进行简化?

2 个答案:

答案 0 :(得分:2)

一般来说,这取决于。如果您正在使用任何类型的ORM,如LINQ to SQL或NHibernate,它将为您做到没有问题。如果你正在使用Plain ADO对象(我认为是这种情况),那么你将不得不使用Command(或SQLCommand或任何其他ICommand实现)对象并使用SQLParameter类(或其他参数类)。

ICommand拥有您可以随意编辑的参数集。

    SqlCommand cmd = new SqlCommand(
            "select * from STH where column = @SpecID", conn);

    //it might be useful to specify a type as well
    SqlParameter param  = new SqlParameter();
    param.ParameterName = "@SpecID";
    //I woudl use the TryParse method though
    param.Value         = int.Parse(lstChooseSpec.SelectedValue);

    cmd.Parameters.Add(param);

答案 1 :(得分:1)

这一行

"@specID" = int.Parse(lstChooseSpec.SelectedValue)

不正确。您不能为常量赋值。你的意思可能是

specId = int.Parse(lstChooseSpec.SelectedValue);

其余代码令人困惑。为什么要将lstChooseSpec.SelectedValue解析为整数,然后尝试将其作为DateTime添加到适配器? C#是强类型的:某些内容可以是intDateTime,但不能同时为。{/ p>

如果您可以发布方法的其余部分,可能会有所帮助。

Also, have a look at this overview on MSDN.