【问题标题】:How can i fetch all images associated by category from database如何从数据库中获取按类别关联的所有图像
【发布时间】:2015-07-15 08:14:01
【问题描述】:

您好,我在数据库中有一个名为 images 的表。我想通过将 Category 与之匹配来从此表中获取 image_path,如下所示。

例如:如果我选择 Web Development 类别,它应该获取与该类别相关的 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

【问题讨论】:

    标签: asp.net webmatrix


    【解决方案1】:

    正如你所说的“如果我选择”,所以我假设你在你的场景中有 Drop down。

    简单的查询将从数据库中提取与所选项目相关的所有记录。

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

    上面的查询可以解决问题。

    如果您是初学者,请学习 ADO.NET。它将帮助您进一步进行。

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

    【讨论】:

    【解决方案2】:

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

        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

    【讨论】:

    • 请仔细阅读我的帖子,我没有使用网络表单。我正在研究 asp.net(网页剃刀)。如果您能以这种方式指导我,那将对我有所帮助。谢谢
    • 您好,上面的这个方法独立于 MVC 的 WebForms 并且可能在一个单独的类中效果最好,该类由您的控制器调用以提供表示路径的字符串列表。如果您想详细了解您的视图/控制器设置如何,我可能会提供更多帮助。
    猜你喜欢
    • 2018-06-08
    • 2019-05-05
    • 1970-01-01
    • 2013-03-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-28
    相关资源
    最近更新 更多