powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Информация о подключении к базе данных.
20 сообщений из 20, страница 1 из 1
Информация о подключении к базе данных.
    #39173312
mishanya3624
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Такой вопрос, как например в режиме онлайн выводить состояние подключения к бд?
...
Рейтинг: 0 / 0
Информация о подключении к базе данных.
    #39173324
Фотография Axeleron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mishanya3624, поставить таймер и с периодичностью проверять connection.IsOpen. Что-то вроде того можно попробовать.

ПС. А зачем это?
...
Рейтинг: 0 / 0
Информация о подключении к базе данных.
    #39173450
mishanya3624
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Axeleron,
Спасибо
Да есть один сервер за бугром с ним связь пропадает(редко, но бывает), чтобы видно было, когда нет связи пользователям.

Еще вопрос:
Обновляю данные:

Код: c#
1.
2.
3.
4.
5.
6.
7.
   cmd = new MySqlCommand("Update `tc-db-log`.logs SET logtime = @time where id = @id ", con);
            da.UpdateCommand = cmd;
            
            cmd.Parameters.Add("@time", MySqlDbType.DateTime).SourceColumn = "logtime";
            cmd.Parameters.Add("@id", MySqlDbType.Int32).SourceColumn = "ID";        
           
            da.Update(ds.Tables[0]);



Как отловить изменение, в смысле данные обновились, проинформировал, обновлений не было, но нажал на кнопку, ничего не произошло.
...
Рейтинг: 0 / 0
Информация о подключении к базе данных.
    #39173455
Фотография Axeleron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mishanya3624Как отловить изменение, в смысле данные обновились, проинформировал, обновлений не было, но нажал на кнопку, ничего не произошло.
Не совсем понял...
...
Рейтинг: 0 / 0
Информация о подключении к базе данных.
    #39173461
mishanya3624
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Axeleron,

если были изменения в таблице, то при нажатии на кнопку "update" вывел сообщение об этом(что данные обновлены), если изменений в таблице не было, но вдруг нажал на кнопку, то ничего не произошло, либо просто другое сообщение вывел.
...
Рейтинг: 0 / 0
Информация о подключении к базе данных.
    #39173474
Фотография Axeleron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mishanya3624, не могу сказать насчет DataAdapter - может, у него есть какое встроенное средство для проверки concurrency записей, но я бы завел поле DateTimeStamp в таблице и при апдейте менял бы его значение. А перед апдейтом сравнивать текущее значение поля (локальный майн записи в адаптере) с тем, что на данный момент в таблице, таким образом принимать решение нужен ли апдейт или нет.
...
Рейтинг: 0 / 0
Информация о подключении к базе данных.
    #39173639
mishanya3624
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Возвращаясь к состоянию подключения:
Что-то с таймером не очень нравится...

А нет ли возможности Listner ip сделать, есть пинг до ip гуд, нет информировать , что доступ прервался(примерно так)?
...
Рейтинг: 0 / 0
Информация о подключении к базе данных.
    #39173995
mishanya3624
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
с пингом отменяется
...
Рейтинг: 0 / 0
Информация о подключении к базе данных.
    #39174006
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mishanya3624Что-то с таймером не очень нравится...Это единственный способ проверить работоспособность и доступность сервера.
...
Рейтинг: 0 / 0
Информация о подключении к базе данных.
    #39174007
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Axeleronпоставить таймер и с периодичностью проверять connection.IsOpen.Этого недостаточно. Нужно посылать тестовый запрос и ловить ошибку.
...
Рейтинг: 0 / 0
Информация о подключении к базе данных.
    #39174032
Фотография Axeleron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КAxeleronпоставить таймер и с периодичностью проверять connection.IsOpen.Этого недостаточно. Нужно посылать тестовый запрос и ловить ошибку.
Я такое никогда не реализовывал. Возможно, что и недостаточно. Я просто дал человеку направление для размышлений.
...
Рейтинг: 0 / 0
Информация о подключении к базе данных.
    #39174210
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AxeleronВозможно, что и недостаточно.
да. недостаточно. никаких "возможно"
...
Рейтинг: 0 / 0
Информация о подключении к базе данных.
    #39174576
mishanya3624
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Axeleronmishanya3624, не могу сказать насчет DataAdapter - может, у него есть какое встроенное средство для проверки concurrency записей, но я бы завел поле DateTimeStamp в таблице и при апдейте менял бы его значение. А перед апдейтом сравнивать текущее значение поля (локальный майн записи в адаптере) с тем, что на данный момент в таблице, таким образом принимать решение нужен ли апдейт или нет.
сделал слегка по другому.
Спасибо!
...
Рейтинг: 0 / 0
Информация о подключении к базе данных.
    #39175352
mishanya3624
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Еще вопрос:
ПРи нажатии на кнопку уходит запрос в БД(не простой) и программа зависает на 5 секунд примерно(время получения ответа от БД)
Как сделать так, чтобы во время этого зависания например работал progressbar говорящий , что идет загрузка?
Пробовал выводить в другой поток , все равно висит все эти 5 сек.
...
Рейтинг: 0 / 0
Информация о подключении к базе данных.
    #39175699
mishanya3624
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нет вариантов комрады?
...
Рейтинг: 0 / 0
Информация о подключении к базе данных.
    #39178451
mishanya3624
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Все же охото разобраться с многопоточностью:
Делаю отдельный класс в нем метод с циклом на заполнение прогрессбара и 2 события на него:
Код: 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.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Threading;

namespace Sphinx
{
    public class _thread
    {
        private bool _cancelled = false;
        public void Cancel()
        {
            _cancelled = true;
        }
        public void Work()
        {
            for (int i =0; i<=100;i++)
            {
                if (_cancelled)
                    break;
                Thread.Sleep(1);
                ProcessChanged(i);
            }
            WorkCompleted(_cancelled);
        }
        public event Action<int> ProcessChanged;
        public event Action<bool> WorkCompleted;
    }
}



Далее в основной форме где по клику на кнопку отправляется запрос в базу и ждет от нее ответ, делаю асинхронный поток от основного(все что закоменчено):
Код: 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.
 public void button1_Click(object sender, EventArgs e)
        {
            //_worker = new _thread();
            //_worker.ProcessChanged += worker_ProcessChanged;
            //_worker.WorkCompleted += _worker_WorkCompleted;
            //Thread thread = new Thread(_worker.Work);
            //thread.Start();

            string hour;            
            
            try
            {
                cmd = new MySqlCommand("select * from (select l.id,logtime,devhint,emphint,ord(substr(logdata,5,1)) as dir from `tc-db-log`.logs l left join `tc-db-main`.personal p ON l.emphint = p.ID where  p.name = @Name and  DATE_FORMAT(l.logtime,'%Y-%m-%d') = @date order by l.id asc limit 1) qq"+ " " +
                "UNION select * from (select l.id,logtime,devhint,emphint,ord(substr(logdata,5,1)) as dir from `tc-db-log`.logs l left join `tc-db-main`.personal p ON l.emphint = p.ID where  p.name = @Name and  DATE_FORMAT(l.logtime,'%Y-%m-%d') = @date order by l.id desc limit 1) ww", con);
                if (sed == "192.168.1.85")
                {
                    hour = "09";                  
                }
                else
                {
                    hour = "08";                  
                }
                cmdd = new MySqlCommand("select ww.* from(select  l.logtime from `tc-db-log`.logs l left join `tc-db-main`.personal p ON l.emphint = p.ID where  p.name = '" + comboBox1.Text.ToString() + "' and  DATE_FORMAT(l.logtime,'%Y-%m-%d') between '2016-01-01' and '2016-12-01' group by  DATE_FORMAT(l.logtime,'%Y-%m-%d')  order by l.id asc ) as ww where DATE_FORMAT(ww.logtime,'%H') > '"+ hour +"' ", con);

                con.Open();
                textBox1.Clear();
                cmd.Parameters.AddWithValue("@Name", comboBox1.Text.ToString());
                cmd.Parameters.AddWithValue("@date", monthCalendar1.SelectionRange.Start.ToString("yyyy-MM-dd"));
                 da = new MySqlDataAdapter(cmd);                
                 ds = new DataSet();
                da.Fill(ds);
                dataGridView1.DataSource = ds.Tables[0];                 
               
                MySqlDataAdapter da2 = new MySqlDataAdapter(cmdd);
                DataSet ds2 = new DataSet();
                da2.Fill(ds2);
                dataGridView2.DataSource = ds2.Tables[0]; 
                con.Close();

              // Календарь

                List<DateTime> d = new List<DateTime>();
                foreach(DataGridViewRow x in dataGridView2.Rows)
                {
                    try
                    { 
                        if(!String.IsNullOrEmpty(x.Cells[0].Value.ToString()))
                        {
                            DateTime d2 = new DateTime();
                            DateTime.TryParse(x.Cells[0].Value.ToString(), out d2);
                            d.Add(d2);
                        }
                    }
                    catch(Exception ex)
                    { }
                }

                monthCalendar1.BoldedDates = d.ToArray();
                
            }
            catch (Exception ex)
            {
               MessageBox.Show(ex.Message);
            }        

        }               
        //private void _worker_WorkCompleted(bool cancelled)
        //{
        //    Action action = () =>
        //        {
        //            string mes = cancelled ? "gggg" : "OK";
        //            //MessageBox.Show(mes);
        //        };
        //    Invoke(action);
        //}
        //private void worker_ProcessChanged(int progress)
        //{
        //    Action action = () =>
        //        {
        //            progressBar2.Value = progress;
        //        };
        //    Invoke(action);
        //}



делаю я это в одном потоке, либо в разных, все равно программа виснет(ждет), пока не получит данные из бд...
что я недопонимаю?
...
Рейтинг: 0 / 0
Информация о подключении к базе данных.
    #39178982
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1. Начните уже читать книжку, хватит страдать фигней
2. используйте TPL, async/await или Task<T>.Run()
...
Рейтинг: 0 / 0
Информация о подключении к базе данных.
    #39179023
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для показа прогресс-бара наверно таймера хватит.
...
Рейтинг: 0 / 0
Информация о подключении к базе данных.
    #39179101
mishanya3624
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima T,

не, это я сразу попробовал, также все висит и выполняется после "отвиса".
...
Рейтинг: 0 / 0
Информация о подключении к базе данных.
    #39179523
mishanya3624
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Roman Mejtes,

читаю Герберта Шилдта "Полное руководство с#4", все по возможности и не так быстро, как хотелось бы, ибо основное направление мое другое и там задач хватает.
Но я стараюсь:) Спасибо!
...
Рейтинг: 0 / 0
20 сообщений из 20, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Информация о подключении к базе данных.
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]