строка + таблица БД для заполнения значений в виде сетки - PullRequest
0 голосов
/ 15 мая 2009

У меня есть строка с такими prodIDs, как «3, 16, 12» можно ли сопоставить эти идентификаторы с таблицей продуктов в БД и отобразить такие детали, как имя, цена в виде сетки?

PS: я новичок в c # и asp.net!

спасибо,

Ответы [ 2 ]

1 голос
/ 15 мая 2009

Используйте некоторую функцию для разделения строки с разделителями на таблицу:

Вот пример.

Затем используйте хранимую процедуру, подобную этой:

CREATE PROCEDURE GetProductsByDelimitedString 
@myString nvarchar(max)
AS
BEGIN
select * from Products where ID in (select * from SplitFunction(@myString))
END

Затем привяжите свой gridview к результату хранимой процедуры:

    string myString = "3,6,12";

    SqlConnection conn = GetSqlConnection();
    GridView gvw = GetGridView();
    SqlCommand cmd = new SqlCommand("GetProductsByDelimitedString", conn);

    cmd.CommandType = System.Data.CommandType.StoredProcedure;        
    cmd.Parameters.AddWithValue("@myString", myString);
    try
    {
        conn.Open();
        gvw.DataSource = cmd.ExecuteReader();
        gvw.DataBind();
        conn.Close();
    }
    catch
    {
        // something bad happened
    }
1 голос
/ 15 мая 2009

Я могу дать вам простой SQL-запрос, который вернет то, что вы хотите, вот так:

SELECT name, price FROM [product] WHERE ProdID IN (3,16,12)

но для того, чтобы сделать это безопасно и эффективно, лучше знать, какой у вас db и откуда эта строка идентификаторов (как она построена).


Исходя из вашего комментария, звучит так, как будто вы используете сессию (и список ArrayList. Вместо этого вы хотите переместить это в базу данных. Вместо того, чтобы помещать каждый элемент корзины в сеанс, есть таблица БД, и каждый раз, когда пользователь выбирает элемент, добавляйте этот элемент в таблицу корзины для покупок. Тогда ваш sql-запрос будет выглядеть так:

SELECT name, price 
FROM [product] 
WHERE ProdID IN 
    SELECT ProdID 
    FROM [ShoppingCart] 
    WHERE CartSession= @CurrentSessionID
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...