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

Создание класса для работы с несколькими таблицами БД

13.05.2014, 23:56. Просмотров 1172. Ответов 6
Метки нет (Все метки)

Добрый вечер форумчане.
Помогите с такой как я думаю не большой(но у меня к сожалению не как не выходит) проблемой.
Нужно сделать так что бы из базы данных информация бралась не только из одной таблицы, а из нескольких и в разные textBox.
Пытался сам засунуть всё в класс и сделать отдельный метод для подключения, но мне постоянно выпадают различные ошибки.
Help.
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
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 MySql.Data.MySqlClient;
using System.Xml;
using System.Xml.Linq;
using MySql.Data;
using word = Microsoft.Office.Interop.Word;
 
namespace Diagnostic
{
    public partial class Form2 : Form
    {
        public Form2()
        {
            InitializeComponent();
        }
 
        private void Form2_Load(object sender, EventArgs e)
        {
            try
            {
                AutoCompleteStringCollection autostr = new AutoCompleteStringCollection();
 
                string myConnection = "DataSource=localhost;Database=arm;username=root;password=root";
                string myCommand = "SELECT namedetal FROM namedetals;";
 
                MySqlConnection myConn = new MySqlConnection(myConnection);
                MySqlCommand selectCommand = new MySqlCommand(myCommand, myConn);
                MySqlDataReader myReader;
 
                myConn.Open();
                myReader = selectCommand.ExecuteReader();
 
                if (myReader != null)
                {
                    while(myReader.Read())
                    {
                        autostr.Add(myReader["namedetal"].ToString());
                    }
                }
 
                textBox1.AutoCompleteMode = AutoCompleteMode.SuggestAppend;
                textBox1.AutoCompleteSource = AutoCompleteSource.CustomSource;
                textBox1.AutoCompleteCustomSource = autostr;
 
                
            }
 
            catch
            {
                MessageBox.Show("увы");
            }
 
        }
    }
}
0
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.05.2014, 23:56
Ответы с готовыми решениями:

Создание класса для работы с БД
Добрый день, не могу разобраться, мне надо написать класс, для работы с БД, там...

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

Создание класса для работы со строками
Помогите пжл написать программу: Создать класс для работы сo строками....

работа с несколькими таблицами
Добрый день, как можно сделать так, чтобы обрашаться к таблице по имени ...

Отношение между несколькими таблицами
Привет всем. Тема в принципе похожа на предыдущую, но все же отличается. ...

6
Rock_STAR
Заблокирован
14.05.2014, 01:04 2
Лучший ответ Сообщение было отмечено Илья29 как решение

Решение

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
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
using System;
using System.Collections.Generic;
using System.Text;
using MySql.Data.MySqlClient;
using System.Data;
using System.Windows.Forms;
using System.IO;
namespace Hospital
{
    class DataConnect
    {
 
        private MySqlConnection connection;
        private string server;
        private string database;
        private string uid;
        private string password;
        public DataConnect()
        {
            Initialize();
        }
 
    //Initialize values
    private void Initialize()
    {
        StreamReader read = new StreamReader(Application.StartupPath+"//config.mova");
        server = read.ReadLine();
        database = "Hospital";
        uid = "root";
        password = "";
        string connectionString;
        connectionString = "SERVER=" + server + ";" + "DATABASE=" + 
        database + ";" + "UID=" + uid + ";" + "PASSWORD=" + password + ";";
        read.Close();
        connection = new MySqlConnection(connectionString);
    }
 
        private bool OpenConnection()
        {
            try
            {
                connection.Open();
                return true;
            }
            catch (MySqlException ex)
            {
                //When handling errors, you can your application's response based 
                //on the error number.
                //The two most common error numbers when connecting are as follows:
                //0: Cannot connect to server.
                //1045: Invalid user name and/or password.
                switch (ex.Number)
                {
                    case 0:
                       // MessageBox.Show("Cannot connect to server.  Contact administrator");
                        break;
 
                    case 1045:
                       // MessageBox.Show("Invalid username/password, please try again");
                        break;
                }
                return false;
            }
        }
 
        //Close connection
        private bool CloseConnection()
        {
            try
            {
                connection.Close();
                return true;
            }
            catch (MySqlException ex)
            {
                //MessageBox.Show(ex.Message);
                return false;
            }
        }
public DataTable getStattalonByID(string s)
        {
            DataTable dt = new DataTable();
            string queryString = @"SELECT 
                                        datenow as `Дата добавления`,
                                        sick.name as `Диагноз`,
                                        doctorSpec as `Специализация врача`,
                                        doctorFIO as `ФИО врача`,
                                        typeDOc as `Тип`,
                                        FormPlus as `Впервые зарегестрирован`,
                                        dateTalon as `Дата Талона`
                                        FROM stattalon
                                        Left JOIN sick on sick.id = stattalon.diagnozID
                                        WHERE idpop = " + s;
 
            if (this.OpenConnection() == true)
            {
                MySqlCommand com = new MySqlCommand(queryString, connection);
 
 
                using (MySqlDataReader dr = com.ExecuteReader())
                {
                    if (dr.HasRows)
                    {
                        dt.Load(dr);
 
                    }
                }
                CloseConnection();
                return dt;
            }
            CloseConnection();
            return null;
        }
        public List<string> GetGoodByNaim(string id)
        {
            List<string> list = new List<string>();
            string queryString = @"SELECT 
                                   Goods.Naim as Naim,
                                   Goods.Coast as Coast,
                                    Goods.OPTCoast as optCoast,
                                    GoodsGroup.Naim as GroupID
                                    FROM `goods`
                                   Left Join GoodsGroup on Goods.GroupID = GoodsGroup.iDGroup
                                   where Goods.naim =  '" + id + "'";
            if (this.OpenConnection() == true)
            {
                //Create Command
                MySqlCommand cmd = new MySqlCommand(queryString, connection);
                //Create a data reader and Execute the command
                MySqlDataReader dataReader = cmd.ExecuteReader();
 
                //Read the data and store them in the list
                if (dataReader.Read())
                {
                    list.Add(dataReader["Naim"]+"");
                    list.Add(dataReader["GroupID"] + "");
                    list.Add(dataReader["Coast"] + "");
                    list.Add(dataReader["OptCoast"] + "");
                }
 
                //close Data Reader
                dataReader.Close();
 
                //close Connection
                this.CloseConnection();
 
                //return list to be displayed
                return list;
            }
            else
            {
                return list;
            }
         
        }
       
        public void Query(string query)
        {
            if (this.OpenConnection() == true)
            {
                MySqlCommand cmd = new MySqlCommand(query, connection);
                cmd.ExecuteNonQuery();
            }
           
            this.CloseConnection();
        }
 
    }
 
}
Мой класс для работы с Мускулом.
Для того чтобы вывести данные в DataGridView использую следующий код

C#
1
2
3
4
DataConnect data = new DataConnect();
this.dataGridView1.DataSource = data.getStattalonByID("2");
 
this.listBox1.DataSource = data.GetGoodByNaim("Ношпа");
Я думаю в примере все ясно будут вопросы обращайтесь
0
nmcf
6515 / 5744 / 2617
Регистрация: 14.04.2014
Сообщений: 24,494
14.05.2014, 09:23 3
А зачем тебе класс? Даже если в БД 10 таблиц, они все поместятся в DataSet.
0
Илья29
0 / 0 / 0
Регистрация: 17.05.2011
Сообщений: 53
14.05.2014, 12:58  [ТС] 4
Как Вы понимаете, я вывожу данные в textBox и нужно выводить разные таблицы в разные textBox, если это можно решить и без класса, то как?)
0
nmcf
6515 / 5744 / 2617
Регистрация: 14.04.2014
Сообщений: 24,494
14.05.2014, 16:53 5
Обращаясь к ним напрямую. По именам.
0
Илья29
0 / 0 / 0
Регистрация: 17.05.2011
Сообщений: 53
14.05.2014, 18:48  [ТС] 6
Дак, а у меня команда для выборки не к той таблице.
И значение autostr (строка 50) записывается в один текстбокс, как поменять значение в autostr?

Добавлено через 1 час 23 минуты
может быть так будет удобнее.
Что я здесь делаю не так и что сделать что бы этот код работал?
Да и в данном коде выдаёт только одну ошибку, ругается на autostr, пишет "элемент autostr не существует в данном контексте"
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
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 MySql.Data.MySqlClient;
using System.Xml;
using System.Xml.Linq;
using MySql.Data;
using word = Microsoft.Office.Interop.Word;
 
namespace Diagnostic
{
    public partial class Form2 : Form
    {
        public Form2()
        {
            InitializeComponent();
        }
 
        private void Form2_Load(object sender, EventArgs e)
        {
            Building txbx = new Building();
 
            txbx.myCommand = "SELECT namedetal FROM namedetals";
            txbx.myConnection = "DataSource=localhost;Database=arm;username=root;password=root";
            txbx.stolb = "namedetal";
 
            textBox1.AutoCompleteMode = AutoCompleteMode.SuggestAppend;
            textBox1.AutoCompleteSource = AutoCompleteSource.CustomSource;
            textBox1.AutoCompleteCustomSource = autostr;
 
                
        }
        class Building
        {
            public string stolb; 
            public string myConnection;
            public string myCommand;
 
            public void Connect()
            {
                AutoCompleteStringCollection autostr = new AutoCompleteStringCollection();
                MySqlConnection myConn = new MySqlConnection(myConnection);
                MySqlCommand selectCommand = new MySqlCommand(myCommand, myConn);
                MySqlDataReader myReader;
 
                myConn.Open();
                myReader = selectCommand.ExecuteReader();
 
                if (myReader != null)
                {
                    while(myReader.Read())
                    {
                        autostr.Add(myReader[stolb].ToString());
                    }
                }
            }
        }
    }
}
0
kmet_misha
36 / 36 / 16
Регистрация: 26.11.2011
Сообщений: 199
15.05.2014, 12:20 7
у тебя область видимости autostr в методе Connect(). объяви ее как переменную класса и обращайся к ней
0
15.05.2014, 12:20
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.05.2014, 12:20

Управление несколькими таблицами одним bindingNavigator
В общем-то есть аналогичная тема...

Создание класса для подключение к БД
Привет, делаю программу(там работа с БД) у меня будет много форм, и я решил,...

Создание приложений для работы с БД
Всем Доброго времени суток. Вопрос заключается в следующем. Что используют при...


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

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

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