Форум программистов, компьютерный форум, киберфорум
C#: Базы данных, ADO.NET
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.54/13: Рейтинг темы: голосов - 13, средняя оценка - 4.54
0 / 0 / 0
Регистрация: 28.05.2015
Сообщений: 25
1

Два запроса SQL к разным таблицам на одной форме

29.01.2016, 20:34. Показов 2385. Ответов 18
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый день!
Пишу программу Расписание.Главный столбец строк слева кто преподаватель,главная строка сверху дата.На пересечении занятия.

Пишу на С# VS ,есть бд стандартная.

Описал первый запрос на счет преподавателей и даты.
Как описать второй,чтобы найти п
редметы?
Точнее вопрос в том,как употребить новый запрос.Это новое соединение? Или можно в старом?
Можно описать поподробнее,пожалуйста.

Мне в новом запросе будет нужно ,что -то типа SELECT * FROM Raspisanie WHERE ....

C#
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
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Data.SqlClient;
 
namespace Raspisaniye
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        string quvery = "";
     
        string strConnection=@"Data Source=(LocalDB)\v11.0;AttachDbFilename='c:\users\петрович\documents\visual studio 2013\Projects\Raspisaniye\Raspisaniye\Database1.mdf';Integrated Security=True";
        private void Form1_Load(object sender, EventArgs e)
        {
            SqlConnection con = new SqlConnection(strConnection);
            con.Open();
            int d=DateTime.Today.Day;
            try
            {
                quvery = "SELECT * FROM Teacher";
 
                SqlCommand com = new SqlCommand(quvery, con);
                SqlDataReader myReader = null;
                myReader = com.ExecuteReader();
 
        
 
                for (int i = 0; i < DateTime.DaysInMonth(2016, 1) - (DateTime.Today.Day - 1); i++)
                {
                    dataGridView1.Columns.Add(i.ToString(), d.ToString() + "." + DateTime.Today.Month);
                    d++;
 
                }
                int k = 0;
                while (myReader.Read())
                {
                    /* dataGridView1.Columns.Add() */
                    dataGridView1.Rows.Add();
                    dataGridView1.Rows[k].HeaderCell.Value = myReader["Zvanie"].ToString() + Environment.NewLine + myReader["LastName"].ToString();
                    dataGridView1.Rows[k].MinimumHeight = 50;
 
                    k++;
                }
             
                }
 
            
            catch (Exception)
            {
                e.ToString();
                con.Close();
            }
 
 
 
        }
 
        private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {
 
        }
    }
}
Миниатюры
Два запроса SQL к разным таблицам на одной форме  
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
29.01.2016, 20:34
Ответы с готовыми решениями:

Возможно ли одновременное соединение двух Recordset'ов к разным таблицам одной базы
Добрый день, уважаемые! Изучая ADO возник такой вопрос, возможно ли одновременное соединение...

Как найти итоговую сумму нескольких combobox. Присоединены к разным таблицам в одной БД
Есть прога для ресторана. Там есть форма &quot;заказы&quot;. В ADOcombobox указываются заказы (горчие блюда,...

Создание запроса по нескольким таблицам одной базы данных Access
Доброго времени суток, форумчане! Такая задача, ребят. Есть в базе куча таблиц с данными. Скажем...

Надо чтобы на одной оси координат отображались два графика разным цветом
Ребят помогите, дайте шаблончик. Надо чтобы на одной оси координат отображались два графика разным...

18
1643 / 1144 / 171
Регистрация: 23.07.2010
Сообщений: 6,794
29.01.2016, 21:32 2
C#
1
2
3
4
SqlCommand command=con.CreateCommand();
command.CommandType=CommandType.Text;
command.CommandText=@"select 1";
object result=command.ExecuteScalar();
0
0 / 0 / 0
Регистрация: 28.05.2015
Сообщений: 25
29.01.2016, 22:10  [ТС] 3
Значит одно соединение?
Не очень понятен ваш код.Он точно правильный?
0
Эксперт .NET
5534 / 4298 / 1217
Регистрация: 12.10.2013
Сообщений: 12,332
Записей в блоге: 2
29.01.2016, 23:16 4
Цитата Сообщение от risen Посмотреть сообщение
Значит одно соединение?
Для начала создайте модели, так будет проще. Примерно так.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.ComponentModel;
 
namespace risen.Demo.Models {
    public class TimeSheet {
        [DisplayName("Идентификатор")]
        public int Id { get; set; }
        [DisplayName("Идентификатор преподавателя")]
        public int TeacherId { get; set; }
        [DisplayName("Идентификатор предмета")]
        public int DisciplineId { get; set; }
        [DisplayName("Время занятия")]
        public DateTime Date { get; set; }
    }
}
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
using System.ComponentModel;
 
namespace risen.Demo.Models {
    public class Discipline {
        [DisplayName("Идентификатор")]
        public int Id { get; set; }
        [DisplayName("Название")]
        public string Name { get; set; }
    }
}
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.ComponentModel;
 
namespace risen.Demo.Models {
    public class Teacher {
        [DisplayName("Идентификатор")]
        public int Id { get; set; }
        [DisplayName("Имя")]
        public string FirstName { get; set; }
        [DisplayName("Отчество")]
        public string SecondName { get; set; }
        [DisplayName("Фамилия")]
        public string LastName { get; set; }
    }
}
Ну а потом пишем свой класс для работы с БД, примерно таким образом:
C#
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
51
52
53
54
55
56
57
58
59
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using System.Data.SQLite;
 
using risen.Demo.Models;
 
namespace risen.Demo.Database {
    public class SQLiteProvider {
        static string CONNECT_STR = string.Format("Data Source = {0}",
            Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "database.db"));
 
        public Teacher[] GetAllTeaches() {
            List<Teacher> teachers = new List<Teacher>();
            string selectStr = "SELECT * FROM teachers";
            using (SQLiteConnection cnn = new SQLiteConnection(CONNECT_STR)) {
                cnn.Open();
                using (SQLiteCommand cmd = new SQLiteCommand(selectStr, cnn)) {
                    using (SQLiteDataReader dr = cmd.ExecuteReader()) {
                        while (dr.Read()) {
                            Teacher t = new Teacher {
                                Id=int.Parse(dr["id"].ToString()),
                                FirstName=dr["firstName"].ToString(),
                                SecondName=dr["secondName"].ToString(),
                                LastName=dr["lastName"].ToString()
                            };
                            teachers.Add(t);
                        }
                    }
                }
            }
            return teachers.ToArray();
        }
        public TimeSheet[] GetTimeSheetsByTeacher(Teacher teacher) {
            List<TimeSheet> timeSheets = new List<TimeSheet>();
            string selectStr = string.Format("SELECT * FROM timeShhets WHERE teacheId='{0}'",
                teacher.Id);
            using (SQLiteConnection cnn = new SQLiteConnection(CONNECT_STR)) {
                cnn.Open();
                using (SQLiteCommand cmd = new SQLiteCommand(selectStr, cnn)) {
                    using (SQLiteDataReader dr = cmd.ExecuteReader()) {
                        while (dr.Read()) {
                            TimeSheet sheet = new TimeSheet {
                                Id=int.Parse(dr["id"].ToString()),
                                TeacherId=int.Parse(dr["teacherId"].ToString()),
                                DisciplineId=int.Parse(dr["disciplineId"].ToString()),
                                Date=DateTime.Parse(dr["date"].ToString())
                            };
                            timeSheets.Add(sheet);
                        }
                    }
                }
            }
            return timeSheets.ToArray();
        }
    }
}
Что надо, дополните дальше сами.
0
0 / 0 / 0
Регистрация: 28.05.2015
Сообщений: 25
30.01.2016, 09:44  [ТС] 5
Можете пояснить,как создать модели?
Не совсем понятно,как данные попадут в мою таблицу.
0
Эксперт .NET
5534 / 4298 / 1217
Регистрация: 12.10.2013
Сообщений: 12,332
Записей в блоге: 2
30.01.2016, 10:44 6
Цитата Сообщение от risen Посмотреть сообщение
Можете пояснить,как создать модели?
Кодом, как я и показал.
Цитата Сообщение от risen Посмотреть сообщение
как данные попадут в мою таблицу.
Через запросы к БД. Поймите, модели - это абстракция. Естественно, они будут отображаться на данные в ваших таблицах. Создавая модель, мы тем самым упрощаем работу, поскольку начинаем работать не со строками и столбцами таблиц, а с полноценными объектами. Скажем так, это нечто среднее (свой велосипед) между ADO.NET и EF. Если не совсем понятно, я сделаю базу для этого примера и покажу вам. Там используется тип БД SQLite, но принцип от этого не меняется, только используемые типы разные.
1
0 / 0 / 0
Регистрация: 28.05.2015
Сообщений: 25
30.01.2016, 12:15  [ТС] 7
Очень бы хотелось научиться данному принципу.Как я понимаю EntityFramework нужен?
Было бы неплохо пример.
Просто у меня без моделей уже описаны столбцы(дата) и строки(преподаватели).Осталось на пересечении добавить предметы из бд.Вот не знаю ,как добавить запрос к другой таблице.

Добавлено через 37 минут
Реально ли запись запроса подобного формата select * from teacher,predmet, raspisanie ? И вытаскивать данные отсюда.
0
Эксперт .NET
5534 / 4298 / 1217
Регистрация: 12.10.2013
Сообщений: 12,332
Записей в блоге: 2
30.01.2016, 12:16 8
Цитата Сообщение от risen Посмотреть сообщение
Как я понимаю EntityFramework нужен?
Нет, тут он ни к чему. Мы сами в некоторой степени моделируем его функционал.
С одной стороны, мы ускоряем работу (как ни крути, а ADO.NET куда как быстрее работает, чем EF), а с другой-пользуемся всеми достоинствами объектной модели (вместо строк и столбцов таблицы у нас полноценные объекты).
0
0 / 0 / 0
Регистрация: 28.05.2015
Сообщений: 25
30.01.2016, 12:54  [ТС] 9
БД у меня есть.Могу прислать проект.У меня проблема с добавлением предметов.
0
Эксперт .NET
5534 / 4298 / 1217
Регистрация: 12.10.2013
Сообщений: 12,332
Записей в блоге: 2
30.01.2016, 14:33 10
Цитата Сообщение от risen Посмотреть сообщение
Могу прислать проект.
Не надо, я примерно понял структуру вашей БД и таблиц, попробую сделать пример относительно своей.
1
1643 / 1144 / 171
Регистрация: 23.07.2010
Сообщений: 6,794
30.01.2016, 14:46 11
Цитата Сообщение от insite2012 Посмотреть сообщение
(как ни крути, а ADO.NET куда как быстрее работает, чем EF
+100500 еще и гибче
0
0 / 0 / 0
Регистрация: 28.05.2015
Сообщений: 25
30.01.2016, 14:55  [ТС] 12
Спасибо.Там на скриншоте то,что у меня в данный момент получается.Так и примерно должно быть.А вот с пересечением где предмет проблемы...

Pincet!!!
[size1"]Добавлено через 2 минуты[/size]
Поясните комментарий сверху?Как подобное использовать?Можно при втором запросе к другой таблице?
0
Эксперт .NET
5534 / 4298 / 1217
Регистрация: 12.10.2013
Сообщений: 12,332
Записей в блоге: 2
30.01.2016, 18:29 13
Лучший ответ Сообщение было отмечено risen как решение

Решение

risen, что-то у меня с фантазией проблемы. В архиве мой проект, там есть база данных (database.db). Это тип SQLite. Если не трудно, заполните ее данными (для заполнения можно использовать специальную программу, есть в сети. SQLiteBrowser).
Вложения
Тип файла: rar risen.rar (492.7 Кб, 9 просмотров)
0
0 / 0 / 0
Регистрация: 28.05.2015
Сообщений: 25
30.01.2016, 20:30  [ТС] 14
Как-то не заполняет таблицу.
Открыл бд а скллайт и заполнил.Но таблица все равно не заполнена.

Добавлено через 10 минут
Крч.Просто форма грузится пустая.
0
Эксперт .NET
5534 / 4298 / 1217
Регистрация: 12.10.2013
Сообщений: 12,332
Записей в блоге: 2
30.01.2016, 20:30 15
Цитата Сообщение от risen Посмотреть сообщение
Как-то не заполняет таблицу.
Скачайте браузер под этот тип БД (SQLiteBrowser), штука полезная, может пригодится. Через него и заполняете. Или можете скачать установщик для этого типа БД (вот тут), и после установки работать с БД прямо из Студии.
0
0 / 0 / 0
Регистрация: 28.05.2015
Сообщений: 25
30.01.2016, 22:16  [ТС] 16
Браузер скачал.заполнил таблицы.форма пустая.
0
0 / 0 / 0
Регистрация: 28.05.2015
Сообщений: 25
31.01.2016, 09:56  [ТС] 17
Прикрепляю фото.бд заполнена.форма пустая.
Миниатюры
Два запроса SQL к разным таблицам на одной форме  
0
1643 / 1144 / 171
Регистрация: 23.07.2010
Сообщений: 6,794
31.01.2016, 11:18 18
Цитата Сообщение от risen Посмотреть сообщение
Pincet!!!
[size1"]Добавлено через 2 минуты[/size]
Поясните комментарий сверху?Как подобное использовать?Можно при втором запросе к другой таблице?
ничего не понял
0
Эксперт .NET
5534 / 4298 / 1217
Регистрация: 12.10.2013
Сообщений: 12,332
Записей в блоге: 2
31.01.2016, 11:23 19
Цитата Сообщение от risen Посмотреть сообщение
бд заполнена
Ну так дайте мне эту БД, чтобы я ее подключил и вывел данные в своем проекте)
0
31.01.2016, 11:23
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
31.01.2016, 11:23
Помогаю со студенческими работами здесь

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

Суммирование по разным таблицам
У меня в базе данных на Access существует несколько таблиц. Нужно подсчитать суммы значений...

Поиск по разным таблицам
Здравствуйте! Написал программу для работы с БД, но нужно сделать так чтобы поиск осуществлялся не...

Перепривязка DataGridView к разным таблицам БД
Здравствуйте. Появился вопрос, есть DataGridView, есть локальная бд с &quot;таблицой 1&quot; и &quot;таблицой 2&quot;....


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

Или воспользуйтесь поиском по форуму:
19
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru