15 / 4 / 2
Регистрация: 16.04.2019
Сообщений: 112
.NET 4.x

Добавление в записей в БД

12.05.2019, 12:48. Показов 4545. Ответов 25
Метки sql (Все метки)

Студворк — интернет-сервис помощи студентам
Народ, подскажите, пожалуйста, у меня есть форма регистрации, при вводе всех данных вроде добавляется, а вроде и нет, поставил кнопку, которая будет отображать имя, добавленное в БД, показывает нормально, но фактически в базе данных я не вижу добавленных записей. Поставил комбобокс, привязал его к БД на столбец UserName, но он ничего не выдает.

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
171
172
173
174
175
176
177
178
179
180
181
using System;
using System.Windows.Forms;
using System.Data.SqlClient;
 
namespace Passwords
{
    public partial class FormRegistration : Form
    {
        public FormRegistration()
        {
            InitializeComponent();
        }
 
         private void FormRegistration_Load(object sender, EventArgs e)
        {
 
        }
 
        async private void ButtonRegistration_Click(object sender, EventArgs e)
        {
            // Проверка 1
            if (TextBoxName.Text == string.Empty && TextBoxPassword.Text == string.Empty && TextBoxDoublePassword.Text == string.Empty && TextBoxCheck.Text == string.Empty)
            {
                LabelEmptyOne.Visible = true;
                LabelEmptyTwo.Visible = true;
                LabelEmptyThree.Visible = true;
                LabelEmptyFour.Visible = true;
            }
            // Проверка 2
            if (TextBoxName.Text == string.Empty && TextBoxPassword.Text != string.Empty && TextBoxDoublePassword.Text != string.Empty && TextBoxCheck.Text != string.Empty)
            {
                LabelEmptyOne.Visible = true;
            }
 
            // Проверка 3
            if (TextBoxName.Text == string.Empty && TextBoxPassword.Text == string.Empty && TextBoxDoublePassword.Text != string.Empty && TextBoxCheck.Text != string.Empty)
            {
                LabelEmptyOne.Visible = true;
                LabelEmptyTwo.Visible = true;
            }
 
            // Проверка 4
            if (TextBoxName.Text == string.Empty && TextBoxPassword.Text == string.Empty && TextBoxDoublePassword.Text == string.Empty && TextBoxCheck.Text != string.Empty)
            {
                LabelEmptyOne.Visible = true;
                LabelEmptyTwo.Visible = true;
                LabelEmptyThree.Visible = true;
            }
 
            // Проверка 5
            if (TextBoxName.Text != string.Empty && TextBoxPassword.Text == string.Empty && TextBoxDoublePassword.Text != string.Empty && TextBoxCheck.Text != string.Empty)
            {
                LabelEmptyTwo.Visible = true;
            }
 
            // Проверка 6
            if (TextBoxName.Text != string.Empty && TextBoxPassword.Text == string.Empty && TextBoxDoublePassword.Text == string.Empty && TextBoxCheck.Text != string.Empty)
            {
                LabelEmptyTwo.Visible = true;
                LabelEmptyThree.Visible = true;
            }
 
 
            // Проверка 7
            if (TextBoxName.Text != string.Empty && TextBoxPassword.Text == string.Empty && TextBoxDoublePassword.Text == string.Empty && TextBoxCheck.Text == string.Empty)
            {
                LabelEmptyTwo.Visible = true;
                LabelEmptyThree.Visible = true;
                LabelEmptyFour.Visible = true;
            }
 
            // Проверка 8
            if (TextBoxName.Text != string.Empty && TextBoxPassword.Text != string.Empty && TextBoxDoublePassword.Text == string.Empty && TextBoxCheck.Text != string.Empty)
            {
                LabelEmptyThree.Visible = true;
            }
 
            // Проверка 9
            if (TextBoxName.Text != string.Empty && TextBoxPassword.Text != string.Empty && TextBoxDoublePassword.Text == string.Empty && TextBoxCheck.Text == string.Empty)
            {
 
                LabelEmptyThree.Visible = true;
                LabelEmptyFour.Visible = true;
            }
 
            // Проверка 10
            if (TextBoxName.Text != string.Empty && TextBoxPassword.Text == string.Empty && TextBoxDoublePassword.Text == string.Empty && TextBoxCheck.Text == string.Empty)
            {
                LabelEmptyOne.Visible = true;
                LabelEmptyThree.Visible = true;
                LabelEmptyFour.Visible = true;
            }
 
            // Проверка 11
            if (TextBoxName.Text != string.Empty && TextBoxPassword.Text != string.Empty && TextBoxDoublePassword.Text != string.Empty && TextBoxCheck.Text == string.Empty)
            {
                LabelEmptyFour.Visible = true;
            }
 
            // Проверка 12
            if (TextBoxName.Text == string.Empty && TextBoxPassword.Text != string.Empty && TextBoxDoublePassword.Text != string.Empty && TextBoxCheck.Text == string.Empty)
            {
 
                LabelEmptyOne.Visible = true;
                LabelEmptyFour.Visible = true;
            }
 
            // Проверка 13
            if (TextBoxName.Text == string.Empty && TextBoxPassword.Text == string.Empty && TextBoxDoublePassword.Text != string.Empty && TextBoxCheck.Text == string.Empty)
            {
                LabelEmptyOne.Visible = true;
                LabelEmptyFour.Visible = true;
                LabelEmptyFour.Visible = true;
            }
 
            // Проверка 14 (2 в 1)
            if (TextBoxName.Text != string.Empty && TextBoxPassword.Text != string.Empty && TextBoxDoublePassword.Text != string.Empty && TextBoxCheck.Text != string.Empty)
            {
 
            }
 
            // Проверка 15
            if (TextBoxName.Text != string.Empty && TextBoxPassword.Text != string.Empty && TextBoxDoublePassword.Text != string.Empty && TextBoxCheck.Text != string.Empty && TextBoxPassword.Text == TextBoxDoublePassword.Text)
            {
                _ = MessageBox.Show("Пароли совпадают!");
 
 
                string connectionString = @"Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=|DataDirectory|\Authorisations.mdf;Integrated Security=True";
                SqlConnection connection = new SqlConnection(connectionString);
                await connection.OpenAsync();
                SqlCommand command = new SqlCommand("INSERT INTO [Authorisation] (UserName, UserPassword, UserCheck)VALUES(@UserName, @UserPassword, @UserCheck)", connection);
                command.Parameters.AddWithValue("UserName", TextBoxName.Text);
                command.Parameters.AddWithValue("UserPassword", TextBoxPassword.Text);
                command.Parameters.AddWithValue("UserCheck", TextBoxCheck.Text);
                await command.ExecuteNonQueryAsync();
                connection.Close();
                //Close();
            }
            // Проверка 16
            if (TextBoxName.Text != string.Empty && TextBoxPassword.Text != string.Empty && TextBoxDoublePassword.Text != string.Empty && TextBoxCheck.Text != string.Empty && TextBoxPassword.Text != TextBoxDoublePassword.Text)
            {
                _ = MessageBox.Show("Пароли не совпадают!");
            }
 
 
 
 
 
        }
 
        private async void Button1_Click(object sender, EventArgs e)
        {
            string connectionString = @"Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=|DataDirectory|\Authorisations.mdf;Integrated Security=True";
            SqlConnection connection = new SqlConnection(connectionString);
            await connection.OpenAsync();
            SqlDataReader reader = null;
 
            SqlCommand command = new SqlCommand("SELECT * FROM [Authorisation]", connection);
 
            try
            {
                reader = await command.ExecuteReaderAsync();
 
                while (await reader.ReadAsync())
                {
                    textBox1.Text = reader[1].ToString();
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message.ToString(), ex.Source.ToString(), MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
            finally
            {
                if (reader != null)
                    reader.Close();
                connection.Close();
            }
        }
    }
}
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
12.05.2019, 12:48
Ответы с готовыми решениями:

Добавление записей невозможно: ключ связи таблицы не входит в набор записей
Люди помогите пожалуйста. Есть база данных с 4 таблицами. Есть форма, на ней располагается подчиненная форма с полями и полем со...

База данных на основе массива записей: добавление, удаление, поиск записей
Комрады, учусь асму, а некоторые моменты не осиливаю :( задача в реализовании некой базы данных с записями "фамилия",...

Добавление записей невозможно: ключ связи таблицы не входит в набор записей
Здравствуйте! Возникла проблема при заполнении формы основанной на запросе. Как можно исправить? Читал уже другие темы с...

25
15 / 4 / 2
Регистрация: 16.04.2019
Сообщений: 112
12.05.2019, 16:44  [ТС]
Студворк — интернет-сервис помощи студентам
Добавлено через 4 минуты
Цитата Сообщение от asn31337 Посмотреть сообщение
Правильнее всего, создать класс модели, который будет отвечать за общение с БД и использовать его. Как именно сделать, есть несколько вариантов. Самый простой - статический класс, либо создание статического экземпляра этого класса. В такой простенькой программе, думаю, это будет оптимальным вариантом. Если же программа имеет сложную структуру, имеет смысл задуматься об использовании паттернов. В случае с WinForms, подойдет MVP.
А если я сделаю вот так? просто объявлю connection до инициализации компонентов, чтобы мне потом использовать connection в событиях данной формы. Так не ругается.

C#
1
2
3
4
5
6
7
8
9
10
public partial class FormRegistration : Form
    {
 
        SqlConnection connection;
 
        public  FormRegistration()
        {
            InitializeComponent();
        }
}
0
Фрилансер
805 / 312 / 148
Регистрация: 13.02.2019
Сообщений: 1,071
12.05.2019, 16:47
Цитата Сообщение от salaga2019 Посмотреть сообщение
А если я сделаю вот так? Объявлю connection до инициализации компонентов.
В C# не имеет значения когда Вы объявляете переменную. Значение имеет только область видимости этой переменной. В таком варианте Вы сможете использовать переменную connection внутри класса FormRegistration. Из классов других форм уже будет невозможно к ней обратиться. Только если сделать статической.

Добавлено через 1 минуту
Цитата Сообщение от salaga2019 Посмотреть сообщение
чтобы мне потом использовать connection в событиях данной формы
Если нужно использовать только в рамках одной формы, то да, такой вариант прокатит.

Добавлено через 1 минуту
Но это не отменяет того факта, что правильнее использовать класс(ы) модели, а не писать код в классе формы.
0
15 / 4 / 2
Регистрация: 16.04.2019
Сообщений: 112
12.05.2019, 17:16  [ТС]
Цитата Сообщение от asn31337 Посмотреть сообщение
Но это не отменяет того факта, что правильнее использовать класс(ы) модели, а не писать код в классе формы.

Спасибо БОЛЬШОЕ!!!
0
Фрилансер
805 / 312 / 148
Регистрация: 13.02.2019
Сообщений: 1,071
12.05.2019, 17:19
Цитата Сообщение от salaga2019 Посмотреть сообщение
Спасибо БОЛЬШОЕ!!!
На здоровье!
0
15 / 4 / 2
Регистрация: 16.04.2019
Сообщений: 112
12.05.2019, 20:33  [ТС]
Подскажите, пожалуйста, какой тип данных мне использовать, чтобы записать значения закешированного (SHA512) пароля в таблицу базы данных?
0
Фрилансер
805 / 312 / 148
Регистрация: 13.02.2019
Сообщений: 1,071
13.05.2019, 01:38
Цитата Сообщение от salaga2019 Посмотреть сообщение
какой тип данных мне использовать, чтобы записать значения закешированного (SHA512) пароля
Я могу ошибаться, но, по-моему, хэш функции дают на выходе строки. Соответственно, строковый тип и нужно использовать. Если мне не изменяет память, в MS SQL Server это NVARCHAR
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
13.05.2019, 01:38

Добавление новых записей невозможно, ключ связи таблицы не входит в набор записей
Не могу добавить данные в поля, выводит такое сообщение: Добавление новых записей невозможно,ключ связи таблицы ЧЕК не входит не входит в...

Формы: добавление новых записей и удаление записей
у меня следующая форма (приложение) добавила кнопки добавление новых записей, удаление записей, вроде работает, нужно ли для них писать...

Удаление всех записей из DataGridView и добавление записей
Всем доброго времени суток. Столкнулся со следующей проблемой: написал код на удаление строк DataGridView. Строки удаляет но не все, а...

простая база с одним полем (оно же ключ), но много записей. как максимально быстро организовать проверку и добавление пакета новых записей?
есть простейшая БД (с одним полем), состоящая из уникальных строковых ключей, типа: SDPT234ddfs4545FFqsdfs TXB2ZQ5d ...

Добавление записей в БД
ADOConnection1.ConnectionString:='Provider=Microsoft.Jet.OLEDB.4.0;Data Source=ASUP.mdb;Persist Security Info=False'; ...


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

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

Новые блоги и статьи
Был там один разговор по поводу свободы в материальном мире.
kumehtar 19.08.2026
Суть: рассматривается живое существо, оказавшееся внутри довольно странной системы (этого мира) и пытающееся обустроить в ней свой кусок пространства. Жизнь действительно предъявляет каждому. . .
Когда логика программы не спасает от человеческих ошибок
Maks 18.08.2026
В последнее время всё чаще и чаще сталкиваюсь с таким явлением, как абсолютная невнимательность (или глупость) пользователей. Проявляется это чаще всего на работе в коллективе. Допустим, человек с. . .
Лето уходит
kumehtar 17.08.2026
Мысли в слух
kumehtar 17.08.2026
Забавно, насколько сейчас стала доступна информация. Например о магии, духовном развитии, медитациях, и других подобных направлениях, ранее зачастую тайных, передаваемых от учителя к ученику. Хотя. . .
Перемещение строк из ТЧ в другой документ с учетом текущего пробега
Maks 17.08.2026
Реализация из решения ниже выполнена на примере нетипового документа "Автозапчасти", с ТЧ "Шины". За основу взят алгоритм отсюда: https:/ / www. cyberforum. ru/ blogs/ 359708/ 10838. html Задача: . . .
Саморегулирующийся социальный контракт для сервера cross-section.
Hrethgir 14.08.2026
С кодом конечно таких глубоких размышлений пока не было, впрочем я уже привык к алгоритмизации. Суть предмета записи: снова в диалоге с нейросетью (я взял пока себе ник для учётки админа - Rector). . . .
Часы электронные
Uhbif79 12.08.2026
Выкладываю программу часов. Программа позволяет: 1. Использовать системное время и дату, 2. Есть возможность вводить время и дату вручную. 3. Реализованы 2 будильника: начало и конец рабочего дня. . . .
Часы с будильником на основе класса QLCDNumber
Uhbif79 12.08.2026
Всем добрый день, выкладываю программу часов с будильником на основе класса QLCDNumber. Здесь я пробовал самостоятельно создавал классы, впервые столкнулся с видимостью переменной одного класса из. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru