Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.95/21: Рейтинг темы: голосов - 21, средняя оценка - 4.95
15 / 4 / 2
Регистрация: 16.04.2019
Сообщений: 112
.NET 4.x

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

12.05.2019, 12:48. Показов 4487. Ответов 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
Ответ Создать тему
Новые блоги и статьи
сукцессия 33. открытые вопросы от клауде
anaschu 19.07.2026
"Что накопилось за эту часть А — тринадцать правок, из которых шесть пришли из ваших вопросов и каждая оказалась реальной ошибкой, а не калибровкой: односторонний симбиоз, отсутствующий листопад,. . .
32 сукцессия
anaschu 19.07.2026
сукцессия 28‑мерное ядро стабилизировано Коллеги, фиксирую разбор инженерных правок и их изоморфную проекцию на экономику, меметику и половой отбор. Модель теперь не «подкручивает» сходимость —. . .
сукцессия 31: модель микоризы - это модель ещё нескольких явлений, социальных и экономических
anaschu 18.07.2026
Теория «Всего»: апдейт v1. 1. 2 — 28‑мерное ядро стабилизировано Коллеги, фиксирую разбор инженерных правок и их изоморфную проекцию на экономику, меметику и половой отбор. Модель теперь не. . .
сукцессия 30. Массив проверяющих друг друга моделей
anaschu 18.07.2026
Архитектура сети взаимопроверяющих моделей микоризной сукцессии (v2. 0) Развитие тензорного ОДУ-ядра и создание кросс-платформенного калибровочного полигона Уважаемые коллеги! В продолжение. . .
Грибы - это женщины, деревья - это мужчины. Анти инь янь для союза мужчины и женщины.
anaschu 18.07.2026
ГЛАВНЫЙ НАУЧНО-ФИЛОСОФСКИЙ ВЫВОД: Сексуально-Репродуктивный Капитализм против Государства Моногамии Коллеги, мы вышли на финишную прямую 20-мерного ОДУ-моделирования вековой сукцессии (ветка. . .
Текстовый слайдер с нумерацией страниц и кроссбраузерность.
russiannick 18.07.2026
Один мой друг написал текстовый слайдер с нумерацией страниц. Сегодня я расскажу как он умудрился подружить его с кроссбраузерностью. Очевидно сложно угодить с шириной каждому браузеру. Один крадет. . .
Грибы - это мемы, дерево - это человек. Применение микоризной модели к теории меметики Докинза.
anaschu 18.07.2026
Меметический изоморфизм теории «всего»: Грибная сукцессия как модель эволюции идей Докинза Базовый код системы ОДУ микоризной сукцессии описывает не просто биологию, а универсальную. . .
Грибы - это корпорации, деревья - это государства. Механизм массонского захвата власти
anaschu 18.07.2026
Макроэкономический изоморфизм теории «всего»: Грибная сукцессия как модель транснационального капитализма Базовый код системы ОДУ микоризной сукцессии описывает не просто биологию, а. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru