using System using System Collections Generic using System ComponentMo

  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
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);
}
}
}
}