Форум программистов, компьютерный форум, киберфорум
Наши страницы
C#: Базы данных, ADO.NET
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.50/4: Рейтинг темы: голосов - 4, средняя оценка - 4.50
Vladimir_Mensk
0 / 0 / 0
Регистрация: 23.05.2011
Сообщений: 26
1

Поиск в базе SQL Server по нескольким параметрам

10.04.2016, 10:55. Просмотров 802. Ответов 14
Метки нет (Все метки)

Имеется форма поиска. в ней можно осуществлять поиск только по одному параметру. как сделать, чтобы можно было искать по нескольким параметрам, например, по фамилии и диагнозу? если можно, то желательно с кодом.
Visual Studio 2010, Sql Server 2014.

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
74
75
76
77
78
79
80
81
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;
 
namespace Hospital_Diplom
{
    public partial class Search : Form
    {
        public Search()
        {
            InitializeComponent();
        }
               
        private void button1_Click(object sender, EventArgs e)
        {
            if (textBox1.Text == "")
            {
                MessageBox.Show("Пустое поле поиска!", "Ошибка поиска", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
            else
            {
                string text = textBox1.Text;                   
                Connection con = new Connection();
                int i = -1;
                dataGridView2.RowCount = 1;
                dataGridView2.ColumnCount = 24;
                if (radioButton1.Checked == true)
                {
                    SqlCommand comand = new SqlCommand(@"SELECT * FROM New_Pacient WHERE (фамилия LIKE '%" + text + "%')", con.ActiveCon());
                    SqlDataReader iReader = comand.ExecuteReader(CommandBehavior.CloseConnection);
                    while (iReader.Read())
                    {
                        i++;
                        dataGridView2.Rows.Add();
                        for (int j = 0; j < 24; j++)
                        {
                            dataGridView2.Rows[i].Cells[j].Value = iReader[j].ToString();
                        }
                    }
                    iReader.Close();
                }
                if (radioButton2.Checked == true)
                {
                    SqlCommand comand = new SqlCommand(@"SELECT * FROM New_Pacient WHERE (диагноз LIKE '%" + text + "%')", con.ActiveCon());
                    SqlDataReader iReader = comand.ExecuteReader(CommandBehavior.CloseConnection);
                    while (iReader.Read())
                    {
                        i++;
                        dataGridView2.Rows.Add();
                        for (int j = 0; j < 24; j++)
                        {
                            dataGridView2.Rows[i].Cells[j].Value = iReader[j].ToString();
                        }
                    }
                    iReader.Close();
                }
                if (radioButton3.Checked == true)
                {
                    SqlCommand comand = new SqlCommand(@"SELECT * FROM New_Pacient WHERE (улица LIKE '%" + text + "%')", con.ActiveCon());
                    SqlDataReader iReader = comand.ExecuteReader(CommandBehavior.CloseConnection);
                    while (iReader.Read())
                    {
                        i++;
                        dataGridView2.Rows.Add();
                        for (int j = 0; j < 24; j++)
                        {
                            dataGridView2.Rows[i].Cells[j].Value = iReader[j].ToString();
                        }
                    }
                    iReader.Close();
                }
            }
        }
    }
}
0
Миниатюры
Поиск в базе SQL Server по нескольким параметрам  
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.04.2016, 10:55
Ответы с готовыми решениями:

Поиск по базе данных MS SQL Server не получается
Пишу учебную программу для работы с базой данных MS Sql Server. До этого дело с базами данных...

Поиск по нескольким параметрам в DataGridView с данными из БД Access
Есть задание, но я напишу лишь ту часть которую не могу сделать Нужно сделать программу которая бы...

Не могу подключиться к базе данных SQL Server
Всем привет. Сейчас изучаю C# по книгам и видеоурокам. На данный момент не могу подключиться к базе...

Многопоточный доступ к базе данных sql server
Доброго вечера. Возникла проблема при обращении к базе. Гугл по этому поводу молчит. Может кто-то...

Не подключается к базе данных (sql server 2005)
Не подключается к базе данных using System; using System.Collections.Generic; using...

14
kodv
1425 / 1098 / 344
Регистрация: 11.04.2011
Сообщений: 2,606
Завершенные тесты: 1
11.04.2016, 03:36 2
T-SQL
1
SELECT * FROM New_Pacient WHERE фамилия LIKE '%' + @Text + '%' OR диагноз LIKE '%' + @Text + '%'
0
Vladimir_Mensk
0 / 0 / 0
Регистрация: 23.05.2011
Сообщений: 26
11.04.2016, 08:30  [ТС] 3
Я не правильно сформулировал вопрос. мне непонятно как организовать поиск по нескольким параметрам. например, в первом textbox вводим фамилию, а во втором диагноз. как связать два textbox в один запрос и потом вывести результат.
0
kodv
1425 / 1098 / 344
Регистрация: 11.04.2011
Сообщений: 2,606
Завершенные тесты: 1
11.04.2016, 08:40 4
T-SQL
1
SELECT * FROM New_Pacient WHERE фамилия LIKE '%' + @Text1 + '%' AND диагноз LIKE '%' + @Text2 + '%'
0
Vladimir_Mensk
0 / 0 / 0
Регистрация: 23.05.2011
Сообщений: 26
11.04.2016, 10:36  [ТС] 5
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
rivate void button2_Click(object sender, EventArgs e)
        {
            string @Text2 = textBox2.Text;
            string @Text3 = textBox3.Text;
 
            if (textBox2.Text == "")
            {
                MessageBox.Show("Пустое поле поиска!", "Ошибка поиска", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
            else
            {
                SqlConnection con = new SqlConnection(@"Data Source=PANDORA\SQLEXPRESS;Initial Catalog=Diplom_Medic;Integrated Security=True");
                con.Open();
 
                SqlDataAdapter da = new SqlDataAdapter(@"SELECT * FROM New_Pacient WHERE фамилия LIKE '%' + @Text2 + '%' AND диагноз LIKE '%' + @Text3 + '%')", con);
                SqlCommandBuilder cb = new SqlCommandBuilder(da);
 
                DataSet ds = new DataSet();
                da.Fill(ds, "New_Pacient");
 
                dataGridView3.DataSource = ds.Tables[0];
                
            }
        }
Выдает ошибку: необходимо объявить скалярную скалярную переменную "@Text2". Что не так я делаю?
0
Миниатюры
Поиск в базе SQL Server по нескольким параметрам  
andrey-m11
18 / 18 / 6
Регистрация: 25.03.2013
Сообщений: 110
11.04.2016, 10:47 6
Vladimir_Mensk,
Вот так как то..фамилия LIKE '%'" + @Text2 +" '%'
0
Vladimir_Mensk
0 / 0 / 0
Регистрация: 23.05.2011
Сообщений: 26
11.04.2016, 11:02  [ТС] 7
Цитата Сообщение от andrey-m11 Посмотреть сообщение
Вот так как то..фамилия LIKE '%'" + @Text2 +" '%'
поменял, не помогло, теперь другая ошибка. неправильный синтаксис... может я где то до этого, что то не так написал?
0
Миниатюры
Поиск в базе SQL Server по нескольким параметрам  
kodv
1425 / 1098 / 344
Регистрация: 11.04.2011
Сообщений: 2,606
Завершенные тесты: 1
11.04.2016, 11:03 8
Цитата Сообщение от Vladimir_Mensk Посмотреть сообщение
Выдает ошибку: необходимо объявить скалярную скалярную переменную "@Text2". Что не так я делаю?
Забываете передать параметры в запрос!
C#
1
2
da.SelectCommand.Parameters.AddWithValue("@Text1", textBox1.Text);
da.SelectCommand.Parameters.AddWithValue("@Text2", textBox2.Text);
0
andrey-m11
18 / 18 / 6
Регистрация: 25.03.2013
Сообщений: 110
11.04.2016, 11:07 9
Vladimir_Mensk, весь запрос покажи... где то наверняка или пробе пропущен или еще что то..
0
Vladimir_Mensk
0 / 0 / 0
Регистрация: 23.05.2011
Сообщений: 26
11.04.2016, 11:12  [ТС] 10
C#
1
SqlDataAdapter da = new SqlDataAdapter(@"SELECT * FROM New_Pacient WHERE фамилия LIKE '%" + textBox2.Text + "%' AND диагноз LIKE '%" + textBox3.Text + "%')", con);
0
andrey-m11
18 / 18 / 6
Регистрация: 25.03.2013
Сообщений: 110
11.04.2016, 11:24 11
'%' а у тебя '% и %' вроде тут
0
Vladimir_Mensk
0 / 0 / 0
Регистрация: 23.05.2011
Сообщений: 26
11.04.2016, 11:34  [ТС] 12
Цитата Сообщение от andrey-m11 Посмотреть сообщение
'%' а у тебя '% и %' вроде тут
без изменений
C#
1
SqlDataAdapter da = new SqlDataAdapter(@"SELECT * FROM New_Pacient WHERE фамилия LIKE '%'" + @Text2 + "'%' AND диагноз LIKE '%'" + @Text3 + "'%')", con);
0
pincet
1382 / 966 / 130
Регистрация: 23.07.2010
Сообщений: 5,226
11.04.2016, 12:10 13
что за бред? Про параметрические запросы и их реализацию ADO.NET не судьба прочитать?
0
kodv
1425 / 1098 / 344
Регистрация: 11.04.2011
Сообщений: 2,606
Завершенные тесты: 1
11.04.2016, 12:10 14
Vladimir_Mensk, может хватит уже заниматься "программированием наугад"? В вашем коде, похоже, нет ни одного своего символа. Все накопипасnчено ото всюду, из-за чего получается полная ахинея. Зачем создавать DataAdapter, да еще и цеплять к нему CommandBuilder, если от адаптера требуется только выбрать данные, после чего он остаетяс на съедение сборщика мусора? Зачем создавать DataSet, если из него используется только единственная таблица? Займитесь мат. частью, а потом уже переходите к практике.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
        private void button2_Click(object sender, EventArgs e)
        {
            if(!string.IsNullOrEmpty(textBox1.Text) && !string.IsNullOrEmpty(textBox2.Text))
            using(SqlConnection con = new SqlConnection(@"Data Source=PANDORA\SQLEXPRESS;Initial Catalog=Diplom_Medic;Integrated Security=True"))
            using(SqlCommand com = new SqlSommand("SELECT * FROM New_Pacient WHERE фамилия LIKE '%' + @Text1 + '%' AND диагноз LIKE '%' + @Text2 + '%'", con))
            {
                con.Open();
                com.Parameters.AddWithValue("@Text1", textBox1.Text);
                com.Parameters.AddWithValue("@Text2", textBox2.Text);
                DataTable dt = new DataTable
                using(SqlDataReader dr = com.ExecuteReader())
                    dt.Load(dr);
                dataGridView3.DataSource = new DataView(dt);
            }
        }
1
pincet
1382 / 966 / 130
Регистрация: 23.07.2010
Сообщений: 5,226
11.04.2016, 12:16 15
kodv, Это voodoo programming
0
11.04.2016, 12:16
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.04.2016, 12:16

Доступ к базе данных SQL Server из интернет
Есть база данных SQL Server, есть программа наполняющая ее, есть программа работающая с этой БД -...

Как подключиться к базе данных MS SQL Server 2008 и сделать выгрузку?
Всем привет) Как подключиться к базе данных MS SQL Server 2008 и сделать выгрузку? Создаю Windows...

Не получается подключится к базе MS SQL Server через VIsual Studio 2012
Здравствуйте, я создал новый проект, пытаюсь в нём создать модель Entity Framework. Когда создаю...


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru