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.OleDb; namespace MTP_Notes { public partial class FormMain : Form { public static DataTable Table; FormNote OpeningNote; public static string connectString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=Notepad_Acs.mdb;"; private OleDbConnection myConnection; public FormMain() { InitializeComponent(); myConnection = new OleDbConnection(connectString); myConnection.Open(); Table = new DataTable(); Table.Columns.Add("Title", typeof(String)); Table.Columns.Add("Content", typeof(String)); /// При загрузке проги, список заметок должен заполяться из БД. #COMPLETED# string query = "SELECT COUNT(db_title) FROM Notes"; //* OleDbCommand command = new OleDbCommand(query, myConnection); int numberOfFields = Convert.ToInt32(command.ExecuteScalar().ToString()); // Проверяем, надо ли создать новую запись или апдейтнуть старую: string doesFieldExist = "0"; for (int i = 0, j_id = 0; i < numberOfFields; i++, j_id++) { for (; ; ) { query = "SELECT COUNT(db_id) > 0 FROM Notes WHERE db_id = " + j_id; command = new OleDbCommand(query, myConnection); doesFieldExist = command.ExecuteScalar().ToString(); if (doesFieldExist == "0") { j_id++; continue; } else { break; } } query = "SELECT db_title FROM Notes WHERE db_id = " + j_id; command = new OleDbCommand(query, myConnection); string selectTitle = command.ExecuteScalar().ToString(); query = "SELECT db_content FROM Notes WHERE db_id = " + j_id; command = new OleDbCommand(query, myConnection); string selectContent = command.ExecuteScalar().ToString(); Table.Rows.Add(selectTitle, selectContent); //* } //* AccessToDatabase ToSpecialClass = new AccessToDatabase(); //* } // При загрузке формы. Настройки нашей таблицы. private void FormMain_Load(object sender, EventArgs e) { dataGridView1.DataSource = Table; dataGridView1.Columns["Content"].Visible = false; dataGridView1.Columns["Title"].Width = 307; } // Создать новую заметку. private void btnCreate_Click(object sender, EventArgs e) { var rowsBefore = dataGridView1.Rows.Count; /// Чтобы не открывалась уже созданная, а создавалась новая. #COMPLETED# OpeningNote = new FormNote(); OpeningNote.Tag = this; OpeningNote.ShowDialog(); /// По выходу из второй формы, мы добавляем последную запись из списка в БД. #COMPLETED# var rowsAfter = dataGridView1.Rows.Count; // Добавляем в БД новую заметку (последняя запись из списка заметок): /// Если мы вышли из формы, ничего не создав, ничего не добавлять. ## if (rowsAfter != rowsBefore) { var insertTitle = dataGridView1[0, dataGridView1.Rows.Count - 1].Value; var insertContent = dataGridView1[1, dataGridView1.Rows.Count - 1].Value; string query = "INSERT INTO Notes (db_title, db_content) VALUES ('" + //* insertTitle + "', '" + insertContent + "');"; OleDbCommand command = new OleDbCommand(query, myConnection); command.ExecuteNonQuery(); //* } } // Удалить (выбранную) заметку. private void btnDelete_Click(object sender, EventArgs e) { /// Чтобы удалялась только выбранная заметка. #COMPLETED# /// Переписать ошибку пустой таблицы. try { int rowsNum = Table.Rows.Count; if (rowsNum != 0) { int index = dataGridView1.CurrentCell.RowIndex; var deleteTitle = dataGridView1.CurrentCell.Value; Table.Rows[index].Delete(); string query = "DELETE FROM Notes WHERE db_title = '" + deleteTitle + "'"; //* OleDbCommand command = new OleDbCommand(query, myConnection); command.ExecuteNonQuery(); //* } } catch (System.NullReferenceException ex) { MessageBox.Show("Внимание!", "Произошла ошибка!", MessageBoxButtons.OK); } /// Удалить выбранную запись из БД. #COMPLETED# } // Открыть заметку по двойному щелчку для её редактирования. private void DataGridView1_CellMouseDoubleClick(object sender, DataGridViewCellMouseEventArgs e) { int index = dataGridView1.CurrentCell.RowIndex; var unupdatedTitle = dataGridView1.CurrentCell.Value; OpeningNote = new FormNote(this); OpeningNote.Tag = this; OpeningNote.ShowDialog(this); /// По выходу из второй формы необходимо обновить измененную заметку в БД. #COMPLETED# try { var updateTitle = dataGridView1.CurrentCell.Value; var updateContent = dataGridView1[1, index].Value; ; string query = "UPDATE Notes SET db_title = '" + updateTitle + "', db_content = '" + //* updateContent + "' WHERE db_title = '" + unupdatedTitle + "'"; OleDbCommand command = new OleDbCommand(query, myConnection); command.ExecuteNonQuery(); //* } catch (System.NullReferenceException ex) { MessageBox.Show("Внимание!", "Произошла ошибка при попытке" + "осуществить запрос на обновление базы данных!", MessageBoxButtons.OK); } } } }