ASP.net c # простой вопрос параметров запроса - PullRequest
0 голосов
/ 28 января 2011
        // Add into DB
        using (tblArtworkTemplatesTableAdapter tblAdapter = new tblArtworkTemplatesTableAdapter())
        {
            tblAdapter.Insert(DateTime.Now, "@specID");
            "@specID" = int.Parse(lstChooseSpec.SelectedValue)
        }

Я знаю, что код неправильный, просто для иллюстрации моей цели, как мне определить параметры ввода?

Ответы [ 2 ]

2 голосов
/ 28 января 2011

Как правило, это зависит.Если вы используете какой-либо ORM, например LINQ to SQL или NHibernate, он сделает это за вас без вопросов.Если вы делаете это с использованием простых 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 голос
/ 28 января 2011

Эта строка

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

Неверно.Вы не можете присвоить значение константе.Вы можете иметь в виду что-то вроде

specId = int.Parse(lstChooseSpec.SelectedValue);

Остальная часть кода сбивает с толку.Почему вы анализируете lstChooseSpec.SelectedValue целое число, а затем пытаетесь добавить его к адаптеру как DateTime?C # строго типизирован: что-то является либо int, либо DateTime, но не может быть и тем и другим.

Может помочь, если вы сможете опубликовать оставшуюся часть метода.1014 * Также взгляните на этот обзор в MSDN.

...