#asp.net #sql #vb.net #sql-server-2005 #sqlparameter
#asp.net #sql #vb.net #sql-server-2005 #sqlparameter
Вопрос:
Раньше у меня был этот
Dt = MyMod.GetDataTable("SELECT TOP " amp; QuestionsPerCats(i) amp; " * From Questions WHERE CategoriesID ='" amp; Cats(i) amp; "' ORDER BY NEWID()")
но теперь я решил использовать sqlparameters, такие как
Dim cmd As New SqlCommand("SELECT TOP @QuestionsPerCats * From Questions WHERE CategoriesID = @CategoriesID ORDER BY NEWID()", conn)
Dim sqlParam As SqlParameter = Nothing
sqlParam = cmd.Parameters.Add("@QuestionsPerCats", SqlDbType.SmallInt)
sqlParam.Value = QuestionsPerCats(i)
sqlParam = cmd.Parameters.Add("@CategoriesID", SqlDbType.SmallInt)
sqlParam.Value = Cats(i)
который, к сожалению, «отображает» как
SELECT TOP @QuestionsPerCats * From Questions WHERE CategoriesID = @CategoriesID ORDER BY NEWID()
и возвращает следующую ошибку
Incorrect syntax near '@QuestionsPerCats'.
Итак, что я здесь делаю не так?
Комментарии:
1. Вы могли бы попробовать использовать cmd.Parameters. AddWithValue(имя, значение)
Ответ №1:
Попробуйте:
SELECT TOP (@QuestionsPerCats) *
FROM Questions
WHERE CategoriesID = @CategoriesID
ORDER BY NEWID()
Комментарии:
1. Еще немного информации: SQL 2005 внес изменения в ключевое слово TOP, так что теперь это функция, которая может принимать параметр.
Ответ №2:
Попробуйте изменить его на это:
cmd.Parameters.Add("@QuestionsPerCats", SqlDbType.SmallInt)
cmd.Parameters("@QuestionsPerCats").Value = QuestionsPerCats(i)
cmd.Parameters.Add("@CategoriesID", SqlDbType.SmallInt)
cmd.Parameters("@CategoriesID").Value = Cats(i)
Метод, который вы используете для добавления параметров в команду, немного странный. Я подозреваю, что это может быть причиной вашей ошибки.
Комментарии:
1. @downvoter, является ли метод, который он использовал, нормальным в VB.NET ? Я специалист по C #, поэтому, пожалуйста, поправьте меня, если я ошибаюсь.
Ответ №3:
Включите @QuestionsPerCats в (), как определено в этой ссылке
SELECT TOP (@QuestionsPerCats) *
From Questions
WHERE CategoriesID = @CategoriesID ORDER BY NEWID()
Комментарии:
1. С более чем 800 повторениями вы, вероятно, уже должны были разобраться
code tags
, верно?