Что использовать в этом SqlDataAdapter? - PullRequest
0 голосов
/ 07 октября 2011

У меня есть SqlDataAdapter, который выглядит примерно так:

("Select prodID, CatalogType, prodName, catID, Integration, ItemProfileCatalogID From ShoppingCart t1 
INNER JOIN ItemCatalogProfile t2 ON t1.CatalogType = t2.CatalogType
WHERE SessionID = '" + Session["ID"] + "' AND CatalogID ='" + Session["Customer"] ....)

есть еще несколько включенных в оператор where, но я не могу заставить их работать:

ItemProfileCatalogID ..

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

Я пытался

viewstate[""]
Request.QuerryString[""]
Session[""]

, и я не могу заставить их работать ..

Проблема, с которой я сталкиваюсь, заключается в текущей корзине покупок, если я делаюне иметь этого элемента для фильтрации, он будет возвращать каждый экземпляр этого конкретного продукта в базе данных, поскольку существует до 250 списков одного элемента для разных каталогов, и именно здесь появляется ItemProfileCatalogID, который фильтрует его доодин предмет

Есть предложения?

Спасибо

Ответы [ 2 ]

1 голос
/ 07 октября 2011

Поскольку InBetween сказал, что, вероятно, проблема заключается в том, что он является числовым, вы должны иметь возможность использовать метод .toString () для решения этой проблемы.

Также хранимые процедуры, как правило, более целесообразно использовать для числаиз причин, в вашем случае вы упомянули, что работаете с корзиной покупок, которая предлагает, возможно, какое-то приложение электронной коммерции?Использование хранимой процедуры здесь будет означать, что SQL не нужно компилировать ваш оператор select каждый раз, когда вы его выполняете, что повышает производительность, а наличие кода в хранимом процессе также повысит удобство обслуживания и, возможно, позволит вам повторно использовать процедуру в других местах.

В дополнение к этому вы фактически не передаете оператор select по сети, что повышает безопасность, поскольку никто не может перехватить это и получить представление о ваших структурах таблиц, и, как упомянуто выше в InBetween, хранимая процедура поможет вам защитить от внедренияатаки или просто непредвиденные данные, поскольку вы можете добавить обработку ошибок более просто.

1 голос
/ 07 октября 2011

CatalogID, вероятно, является числовым, и вы используете его в качестве строки в своем операторе SQL.

Возможно также, что у вас есть какая-то синтаксическая ошибка в вашем операторе SQL, которую трудно обнаружить при конкатенации всех строкили CatalogID содержит непослушный символ (например, ')

Также, пожалуйста, проверьте параметризованные запросы;объединение при построении операторов SQL обычно не очень хорошая идея ( SQL-инъекция ).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...