Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.58/26: Рейтинг темы: голосов - 26, средняя оценка - 4.58
0 / 0 / 0
Регистрация: 31.03.2013
Сообщений: 10

Связать 2 базы данных и вывести на страницу

31.03.2013, 12:15. Показов 5200. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Господа, всем доброго времени суток.
Столкнулся с некоторой проблемой, в виду своей зелености в предметной сфере.
Итак у нас есть задача:
сделать БД с 2-мя таблицами, например магазины и товары этих магазинов. Вывести магазины на веб страницу, и дать возможность выбрать некоторую позицию и увидеть товары данных магазинов.
Что я смог сделать:
это создать БД, добавить 2 таблицы, заполнить их некоторыми значениями, кинуть на форму gridview и sqldatasource, в последнем установив команду selectcommand на то чтобы она показывала таблицу магазинов. на этом пока остановился.
Не знаю как:
а) связать 2 таблицы БД между собой. т.е. закрепить товары за магазинами.
б) как предоставить пользователю возможность выбирать конкретный магаз на веб странице и видеть список его товаров?
Буду чертовски благодарен, если поможете.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
31.03.2013, 12:15
Ответы с готовыми решениями:

Вывести данные с базы данных на jsp страницу
Здравствуйте. Изучаю java ee, пишу простой блог. Надо на главную страницу вывести список всех записей. Есть структура в бд: -- ...

не получается вывести все фотографии из базы данных в php страницу
всем добрый вечер проблема такая: не знаю как правильно указывать путь в php коде для вывода всех фотографий из базы данных в базе...

Необходимо разбить данный перечень на таблицы и связать их в схеме данных. Нужно для создания базы данных
Перечень: Город, название вокзала, ФИО начальника, телефон, номер поезда, тип вагона, пункт назначения, время отправления, время в...

10
 Аватар для Kruds
708 / 708 / 226
Регистрация: 04.03.2013
Сообщений: 1,384
31.03.2013, 13:02
а) Допустим у вас две таблицы:
-Shops (ID, Name)
-Product(ID, Name)
Тогда можно составить третью таблицу в которой будет лежать и обновляться информация о том, какой магазин что продает:
SQL
1
CREATE TABLE Sales (ID INT IDENTITY(1,1) PRIMARY KEY, Shop_ID INT FOREIGN KEY REFERENCES Shops(ID), Product_ID INT FOREIGN KEY REFERENCES Products(ID))
Ну и к ней соответствующий запрос для вывода информации:
SQL
1
2
3
4
SELECT Shops.Name, Product.Name 
FROM Sales
JOIN Shops ON Shops.ID = Sales.Shop_ID
JOIN Product ON Product.ID = Sales.Product_ID
1
 Аватар для Монфрид
1245 / 1055 / 293
Регистрация: 07.03.2012
Сообщений: 3,247
31.03.2013, 13:04
один товар может находиться только в одном магазине? если да, то надо создать колонку в товарах, типа КодМагазина, и связать её с id магазина в таблице магазины. Ежели, товар может находиться во многих магазинах, то тогда связь М-М, её надо устранять введением дополнительной таблицы где будут Код Товара и Код магазина.
Что у вас за субд? если MsSql, то можно обойтись безо всяких sqldataSource, а использовать Linq.
Надо вам немного теории почитать про реляционные бд.
1
0 / 0 / 0
Регистрация: 31.03.2013
Сообщений: 10
31.03.2013, 13:13  [ТС]
Я создал внутри самой visual studio Базу данных SQL Server. Кстати да, в задании указано, что выборка данных, должна происходить посредством Linq.
Ну вот вроде со вчерашнего дня раскапываю материалы, по том как устроены БД и т.д. Интересно все очень

Добавлено через 5 секунд
Я создал внутри самой visual studio Базу данных SQL Server. Кстати да, в задании указано, что выборка данных, должна происходить посредством Linq.
Ну вот вроде со вчерашнего дня раскапываю материалы, по том как устроены БД и т.д. Интересно все очень

П.С.
вчера попробовал связать 2 Таблицы посредством внешнего ключа. Делал так. добавил в таблицу товаров столбец ShopID. Затем ткнул правой кнопкой отношения. и связала обычное ID в Shops, со столбцом ShopsID в Goods....
тогда я так понимаю осталась проблема номер 2.
0
 Аватар для Kruds
708 / 708 / 226
Регистрация: 04.03.2013
Сообщений: 1,384
31.03.2013, 13:27
Сделайте ComboBox с перечнем магазинов из таблицы Shops, обработайте событие выбора элемента из списка в котором и будет Linq запрос к записям Магазины-Товары.
0
0 / 0 / 0
Регистрация: 31.03.2013
Сообщений: 10
31.03.2013, 13:50  [ТС]
ComboBox не подходит, в задании требуется строго таблица, т.е. GridView.... по Linq сейчас скачал примеры для VS2010 попробую разобраться как оно вообще работает. Есть ли идеи, каким образом реализовать выбор магазина в Гридвью?
0
 Аватар для Kruds
708 / 708 / 226
Регистрация: 04.03.2013
Сообщений: 1,384
31.03.2013, 14:13
На ум приходят только пара вариантов:
1) Сделать форму поиска. Например пользователь нажал Ctrl+F на столбце магазинов, появилось окно с текстовым полем (или даже лучше выпадающим списком). Ну далее думаю ясно.
2) Обработка комбинации клавиш, после нажатия которой на выбранной пользователем ячейке с нужным магазином, грид отобразит только соответствующие записи.
0
 Аватар для Монфрид
1245 / 1055 / 293
Регистрация: 07.03.2012
Сообщений: 3,247
31.03.2013, 15:52
ничего сложного не вижу. При выделении магазина обрабатываете событие нажатия на ячейке, получаете Код магазина, по этому коду ищите все товары, выводите эти товары
0
0 / 0 / 0
Регистрация: 31.03.2013
Сообщений: 10
31.03.2013, 19:10  [ТС]
Почти сделал.
Начал пробовать делать через LinqDatasource.
добавил соответствующий контрол, привязал его к гридвью.
добавил также еще один DetailView и привязал его к еще одному LinqDatasource.
По идее, кнопка контрола GridView Выбрать должна делать нужную операцию, однако она не делает этого
При запуске виден только основной грид вью и детэйл вью с самой первой позицией.
Я предполагаю, что у меня косяк с запросами,
или неправильно установлены отношения между таблицами БД....
0
 Аватар для Монфрид
1245 / 1055 / 293
Регистрация: 07.03.2012
Сообщений: 3,247
31.03.2013, 20:40
код то покажите
0
0 / 0 / 0
Регистрация: 31.03.2013
Сообщений: 10
01.04.2013, 14:42  [ТС]
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
<%@ Page Title="Домашняя страница" Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true"
    CodeBehind="Default.aspx.cs" Inherits="App._Default" %>
 
<asp:Content ID="HeaderContent" runat="server" ContentPlaceHolderID="HeadContent">
</asp:Content>
<asp:Content ID="BodyContent" runat="server" ContentPlaceHolderID="MainContent">
    <h2>
        Добро пожаловать в ASP.NET!
    </h2>
    <p>
        Для получения дополнительных сведений об ASP.NET посетите веб-сайт <a href="http://www.asp.net" title="Веб-сайт ASP.NET">www.asp.net</a>.
    </p>
    <p>
        Кроме того, <a href="http://go.microsoft.com/fwlink/?LinkID=152368"
            title="Документация по ASP.NET на MSDN">документация по ASP.NET доступна на MSDN</a>.
    </p>
    <p>
        <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" 
            DataKeyNames="ID" DataSourceID="LDS">
            <Columns>
                <asp:CommandField ShowSelectButton="True" />
                <asp:BoundField DataField="ID" HeaderText="ID" InsertVisible="False" 
                    ReadOnly="True" SortExpression="ID" />
                <asp:BoundField DataField="Name" HeaderText="Name" SortExpression="Name" />
                <asp:BoundField DataField="Adress" HeaderText="Adress" 
                    SortExpression="Adress" />
                <asp:BoundField DataField="Time" HeaderText="Time" SortExpression="Time" />
            </Columns>
        </asp:GridView>
        <asp:LinqDataSource ID="LDS" runat="server" ContextTypeName="App.DCDataContext" 
            EntityTypeName="" TableName="Shops">
        </asp:LinqDataSource>
    </p>
    <p>
        <asp:DetailsView ID="DetailsView1" runat="server" AutoGenerateRows="False" 
            DataKeyNames="ID" DataSourceID="LinqDataSource1" Height="50px" Width="125px">
            <Fields>
                <asp:BoundField DataField="ID" HeaderText="ID" InsertVisible="False" 
                    ReadOnly="True" SortExpression="ID" />
                <asp:BoundField DataField="Name" HeaderText="Name" SortExpression="Name" />
                <asp:BoundField DataField="Text" HeaderText="Text" SortExpression="Text" />
                <asp:BoundField DataField="ShopID" HeaderText="ShopID" 
                    SortExpression="ShopID" />
            </Fields>
        </asp:DetailsView>
        <asp:LinqDataSource ID="LinqDataSource1" runat="server" 
            ContextTypeName="App.DCDataContext" EntityTypeName="" TableName="Goods">
        </asp:LinqDataSource>
    </p>
</asp:Content>
что-то тип того..

Добавлено через 17 часов 26 минут

Добавлено через 48 секунд
Господа, почти сделал. точнее сделал, но получил последний косяк.
в общем.
C#
1
2
3
4
5
6
7
8
9
    protected void GridView1_SelectedIndexChanged(object sender, EventArgs e)
        {
            proba_pera.bdDataContext bd = new proba_pera.bdDataContext();
            var products = from p in bd.Goods
                           where p.ShopID == GridView1.SelectedIndex
                           select p;
            GridView2.DataSource = products;
            GridView2.DataBind();
        }
При нажатии на кнопку выбор в Gridview выполняем запрос, и выводим результат в другой GridView.
Вроде все просто и все работает, однако остался последний косяк.
Изначально в таблице товаров например есть 4 магазина. каждый из них имеет ИД=1,2,3,4.
Однако, нажав Select на 1-ый магазин, запрос не выводит его товары, привязанные к нему по ИД. Нажав на 2-ой магазин, запрос выводит товары привязанные к первому. вот так в общем все смещается....
Подскажите плз, где же ошибка?

Добавлено через 5 минут
Разобрался. в строке where p.ShopID == GridView1.SelectedIndex, нужно было прибавить +1. все гуд работает. можно закрывать тему. Всем помогавшим огромное спасибо!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
01.04.2013, 14:42
Помогаю со студенческими работами здесь

Связать таблицы базы данных
Есть три таблички: Сотрудники (Код сотрудника, Фамилия, Имя, Отчество, Оклад). Виды работ (Код вида, Описание, Оплата за день).Работы...

Связать между собой базы данных
Ребзя, всем здравствуйте! У меня появилась такая проблема, нужно связать между собой базы данных, что бы потом можно было по нажатию кнопки...

Связать класс с таблицей из базы данных
Есть класс объект класса: class People { /// Фамилия public string LastName { get; set; } /// Имя public string...

Как связать 2 базы данных в одну
Всем привет!) Такая ситуация, есть две базы с кучей запросов и т.д., в одной из них отображаются данные монтажа, а в другой в основном...

Как связать файл базы данных с приложением!?
Год назад писал прогу на С# и связывал её с базой данных, которую создал в WORKBENCHе. Все работало. Но если я переношу приложеньку на...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru