我有一个像prodID一样的字符串 “3,16,12”是否可以将这些ID与数据库中的产品表进行匹配,并在gridview中显示名称,价格等详细信息?
PS:我是c#和asp.net的新手!
感谢,
答案 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)
使用某些函数将分隔的字符串拆分为表格:
然后使用如下存储过程:
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
}