Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / WinForms, .Net Framework Новый топик    Ответить
 Новичок: Как наладить взаимодйствие?  [new]
antox
Member

Откуда: РФ
Сообщений: 993
Добавил пространство имен
using System.Data.SQLite;


создал переменные
private String dbFileName;
        private SQLiteConnection m_dbConn;
        private SQLiteCommand m_sqlCmd;


Подключился к БД
m_dbConn = new SQLiteConnection();
            m_sqlCmd = new SQLiteCommand();

            dbFileName = textBox1.Text;
            lbStatusText.Text = "Disconnected";
            m_dbConn = new SQLiteConnection("Data Source=" + dbFileName + ";Version=3;");

            try
            {
                m_dbConn.Open();
                lbStatusText.Text = "Connected";
            }
            catch (SQLiteException ex)
            {
                lbStatusText.Text = "Disconnected";
                MessageBox.Show("Error: " + ex.Message);
            }


Произвел выборку и заполнил сетку

DataTable dTable = new DataTable();
            String sqlQuery;

            if (m_dbConn.State != ConnectionState.Open)
            {
                MessageBox.Show("Open connection with database");
                return;
            }

            try
            {
                sqlQuery = "SELECT * FROM users";
                SQLiteDataAdapter adapter = new SQLiteDataAdapter(sqlQuery, m_dbConn);
                adapter.Fill(dTable);

                if (dTable.Rows.Count > 0)
                {
                    dgvViewer.Rows.Clear();

                    for (int i = 0; i < dTable.Rows.Count; i++)
                    {
                        dgvViewer.Rows.Add(dTable.Rows[i].ItemArray);
                        MessageBox.Show(dTable.Rows[i].Field('user_id').ToString); [b]//Не работает (непонятно, как получить значение поля в цикле)[/b]
                    }
                }
                else
                    MessageBox.Show("Database is empty");
            }
            catch (SQLiteException ex)
            {
                MessageBox.Show("Error: " + ex.Message);
            }


1.Не могу получить данные поля - как это правильно сделать?
2.Как потом по (например, при клике по сетке) получать id строки, если в сетке нет такого поля. Или это возможно только при подключении к базе ч-з Источники данных и связке грида с набором из источника? Если так, то получается, что без создания источника данных (ч-з провайдера) нормально приложения для работы с БД не сделать?
3.Можно как-то связать набор данных dTable с сеткой dgvViewer, что бы курсор ходил по dTable и значения можно было бы брать оттуда?
4.Как вообще обычно реализовывается изменение в БД, при изменении дынных в ячейке сетки (при таком подключении) при подключении ч-з источник данных?
5.Как выполнить обновление именно текущей записи грида значениями из БД не перегружая все содержимое?
11 июн 19, 03:56    [21906297]     Ответить | Цитировать Сообщить модератору
 Re: Новичок: Как наладить взаимодйствие?  [new]
Cat2
Member

Откуда: Petroskoi, Karjala
Сообщений: 145594
antox
2.Как потом по (например, при клике по сетке) получать id строки, если в сетке нет такого поля.

(dgvViewer.CurrentRow as DataRowView)["id"]


antox
3.Можно как-то связать набор данных dTable с сеткой dgvViewer, что бы курсор ходил по dTable и значения можно было бы брать оттуда?

Можно и именно так и надо делать, а не заниматься фигней типа
if (dTable.Rows.Count > 0)
                {
                    dgvViewer.Rows.Clear();

                    for (int i = 0; i < dTable.Rows.Count; i++)
                    {
                        dgvViewer.Rows.Add(dTable.Rows[i].ItemArray);
                        MessageBox.Show(dTable.Rows[i].Field('user_id').ToString); [b]//Не работает (непонятно, как получить значение поля в цикле)[/b]
                    }
                }


Привязка

https://docs.microsoft.com/ru-ru/dotnet/framework/winforms/controls/how-to-bind-data-to-the-windows-forms-datagridview-control

Но лучше делать все это в дизайнере, создав типизированный DataSet.

У Вас ВСЕ или неправильно, или нерационально
11 июн 19, 17:08    [21906924]     Ответить | Цитировать Сообщить модератору
 Re: Новичок: Как наладить взаимодйствие?  [new]
antox
Member

Откуда: РФ
Сообщений: 993
Спасибо за информацию. Как раз пытаюсь понять, как это делается правильно.

Cat2
Но лучше делать все это в дизайнере, создав типизированный DataSet.


Можете дать ссылку на почитать или ключевые слова поиска по данной теме..?
11 июн 19, 17:53    [21906961]     Ответить | Цитировать Сообщить модератору
 Re: Новичок: Как наладить взаимодйствие?  [new]
Cat2
Member

Откуда: Petroskoi, Karjala
Сообщений: 145594
antox,

Во-первых
Практическое руководство. Привязка данных к элементу управления Windows Forms DataGridView
https://docs.microsoft.com/ru-ru/dotnet/framework/winforms/controls/how-to-bind-data-to-the-windows-forms-datagridview-control




Только учтите, что в реале никто так не делает. Практически все это делается в дизайнере.

Шаг 1. Создание типизированного DataSet
https://docs.microsoft.com/ru-ru/previous-versions/04y282hb(v=vs.140)

Шаг 2.
Пошаговое руководство. Подключение к данным в базе данных (Windows Forms)
https://docs.microsoft.com/ru-ru/previous-versions/tzedkwye(v=vs.140)



И очень полезная вечнозеленая статья

https://www.rsdn.org/article/dotnet/DataGridView20.xml
11 июн 19, 18:49    [21906998]     Ответить | Цитировать Сообщить модератору
 Re: Новичок: Как наладить взаимодйствие?  [new]
antox
Member

Откуда: РФ
Сообщений: 993
автор

Только учтите, что в реале никто так не делает. Практически все это делается в дизайнере.


Именно это я и хотел понять. Что бы пойти по правильному пути. Спасибо ))
12 июн 19, 02:53    [21907128]     Ответить | Цитировать Сообщить модератору
 Re: Новичок: Как наладить взаимодйствие?  [new]
Siemargl
Member

Откуда: 010100
Сообщений: 6179
Cat2,

Браво! Я не смог адекватно ответить, не посылая в учебник через 3 колена.!!
13 июн 19, 00:21    [21907528]     Ответить | Цитировать Сообщить модератору
Все форумы / WinForms, .Net Framework Ответить