string + db table用于填充gridview中的值

时间:2009-05-15 19:38:28

标签: c# string select

我有一个像prodID一样的字符串 “3,16,12”是否可以将这些ID与数据库中的产品表进行匹配,并在gridview中显示名称,价格等详细信息?

PS:我是c#和asp.net的新手!

感谢,

2 个答案:

答案 0 :(得分:1)

我可以给你一个简单的SQL查询,它将返回你想要的内容:

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

但为了安全有效地完成它,最好知道你拥有什么类型的数据库以及这些数据库来自哪里(如何构建)。


根据你的评论,听起来你正在使用会话(和一个ArrayList-呃。除非你仍然在.Net 1.1,他们是邪恶的)作为购物车。您想要做的是将其移动到数据库。而不是将每个购物车项目放在会话中都有一个数据库表,每次用户选择一个项目时,将该项目添加到购物车表中。然后您的SQL查询将如下所示:

SELECT name, price 
FROM [product] 
WHERE ProdID IN 
    SELECT ProdID 
    FROM [ShoppingCart] 
    WHERE CartSession= @CurrentSessionID

答案 1 :(得分:1)

使用某些函数将分隔的字符串拆分为表格:

Here is an example.

然后使用如下存储过程:

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
    }