如何从数据库中获取按类别关联的所有图像

时间:2015-07-15 08:14:02

标签: asp.net webmatrix

我在数据库中有一个名为 images 的表。我想通过匹配类别来从此表中获取image_path,如下所示。

例如:如果我选择Web开发类别,它应该获取与该类别相关的image_path。

我正在使用asp.net网页。请指导我如何实现它?

id      Category                 image_path

4	New Websites	         img\images\1982d16f-1a85-49c3-b7ac-94e05152273d_01.jpg
6	Mobiles                  img\images\87678076-3f19-43c0-909f-eec172d69919_02.jpg
7	Web Development	         img\images\4fef0362-b5fd-43d1-b988-c5d7e674add0_03.jpg
8	Web Development	         img\images\5752419a-013d-4c09-99af-f28132102189_04.jpg
9	Web Development	         img\images\e4876bff-b647-48d6-a3a0-b1e7bfb6d60a_05.jpg
10	Web Designing	         img\images\e86c3edc-0591-4157-8525-33e52ca21f64_06.jpg
11	Mobiles	                 img\images\2b6ccd51-77f1-4da8-9ed6-98c2b069e92d_07.jpg
12	Mobile apps	         img\images\44694e2e-24dc-4f06-bb8f-88b597322c0d_005.jpg
13	Mobile apps	         img\images\9d5ca99a-f6fd-43d7-8a05-a6671f73bd54_006.jpg

2 个答案:

答案 0 :(得分:0)

正如您所说"如果我选择",那么我假设您已经在您的方案中退出。

只需按照查询即可从数据库中提取与所选项目相关的所有记录。

Select image_path from images where Category = '"+DropDown1.SelectedItem+"'

以上查询可以解决问题。

如果您是初学者,请了解ADO.NET。它将帮助您继续前进。

注意:下拉是假设。您可以根据您的要求保留。

答案 1 :(得分:0)

这是检索图像路径的一种非常直接的方法:

    public List<string> GetImagePathsForCategory(string category)
    {
        const string DatabaseConnectionString = "MyConnectionString"; //probably use a setting from your web.config
        const string CategoryParameterName = "@version";
        const string ImagePathQuerySqlString = "Select image_path from images where Category = " + CategoryParameterName;
        var imagePaths = new List<string>();
        using (var dbConnection = new SqlConnection(DatabaseConnectionString))
        {
            dbConnection.Open();
            using (var query = new SqlCommand(ImagePathQuerySqlString, dbConnection))
            {
                query.Parameters.Add(new SqlParameter() { ParameterName = CategoryParameterName, Value = category });
                using (var reader = query.ExecuteReader())
                {
                    while (reader.Read())
                    {
                        imagePaths.Add(reader.GetString(0));
                    }
                }
            }
        }
        return imagePaths;
    }

虽然这对于一次性使用是可以的,但如果您经常查询数据库,那么我会查看ORM(例如NHibernate或实体框架),这将完成繁重的任务。您或 - 如果您不想这样做 - 那么请使用ADO.Net实施您自己的Data Access LayerRepository Pattern