Форум программистов, компьютерный форум, киберфорум
C#: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.91/11: Рейтинг темы: голосов - 11, средняя оценка - 4.91
0 / 0 / 1
Регистрация: 06.02.2017
Сообщений: 91

System.FormatException в программе связанной с базой Access

28.02.2017, 15:08. Показов 2425. Ответов 29

Студворк — интернет-сервис помощи студентам
An unhandled exception of type 'System.FormatException' occurred in mscorlib.dll
выдает такую ошибку и выделяет строки
C#
1
2
3
 var da = new OleDbDataAdapter("SELECT Сотрудники.[Id работника], Сотрудники.Пароль FROM Сотрудники WHERE Сотрудники.[Id работника]=@id AND Сотрудники.Пароль=@pass", cn);
            da.SelectCommand.Parameters.Add("@id", OleDbType.Integer).Value = int.Parse(textBox1.Text);
            da.SelectCommand.Parameters.Add("@pass", OleDbType.VarChar).Value = textBox2.Text;
Вот весь код
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
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;
using System.Diagnostics;
 
namespace Курсач
{
    public partial class Form1 : Form
    {
        OleDbConnection cn = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=G:\Visual\Forms\Курсач\Курсач\Bondarkov_kursach.accdb");
        OleDbDataAdapter da;
        DataTable dt = new DataTable();
        public static string user;
        private Form2 form2;
        public Form1()
        {
            InitializeComponent();
            form2 = new Form2(this) { Visible = false };
        }
 
        private void label3_Click(object sender, EventArgs e)
        {
 
        }
 
        private void button1_Click(object sender, EventArgs e)
        {
            string id;
            var da = new OleDbDataAdapter("SELECT Сотрудники.[Id работника], Сотрудники.Пароль FROM Сотрудники WHERE Сотрудники.[Id работника]=@id AND Сотрудники.Пароль=@pass", cn);
            da.SelectCommand.Parameters.Add("@id", OleDbType.Integer).Value = int.Parse(textBox1.Text);
            da.SelectCommand.Parameters.Add("@pass", OleDbType.VarChar).Value = textBox2.Text;
            if (dt.Rows.Count <= 0)
            {
                MessageBox.Show("Введен не верный Id или пароль");
            }
            else if (dt.Rows.Count > 0)
                    {
                id = textBox1.Text;
                MessageBox.Show(id);
                this.Visible = false;
                form2.Visible = true;
            }
        }
    }
}
В базе ID тип числовой, пароль текстовый
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
28.02.2017, 15:08
Ответы с готовыми решениями:

Ошибка в программе связанной с базой данных
Программа должна осуществлять авторизацию. Оператор вводит свой id и пароль, а программа проверяет их с данными записанными в базе MS...

Как в программе можно открыть файл, с уже готовой базой данных в Access
Скажите как в программе можно открыть файл, с уже готовой базой данных в Access

System.FormatException
Добрый вечер, пытаюсь тестово сделать форму аутентофикации по api. При попытке отправить запрос (по нажатию кнопки) вылетает исключение...

29
0 / 0 / 1
Регистрация: 06.02.2017
Сообщений: 91
28.02.2017, 18:05  [ТС]
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от OwenGlendower Посмотреть сообщение
Такие ошибки нужно уметь исправлять самостоятельно
так получилось что я с C# работаю пару недель только, а по программе он вообще только через месяц.

Добавлено через 6 минут
Цитата Сообщение от OwenGlendower Посмотреть сообщение
вот так можно сделать
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
       
 const string ConnectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=G:\Visual\Forms\Курсач\Курсач\Bondarkov_kursach.accdb"; //подключение к бд
 
        private void button1_Click(object sender, EventArgs e)
        {
            if (!IsValidIdAndPassword(textBox1.Text, textBox2.Text))
            {
                MessageBox.Show("Введен неверный Id или пароль");
            }
            else
            {
                Visible = false;
                var form2 = new Form2(this);
                form2.Show();
            } // по нажатию на кнопку идет запрос, но через отдельную операцию?
        }
 
        private static bool IsValidIdAndPassword(string id, string password)  
        {
            int idValue;
            if (string.IsNullOrWhiteSpace(id) || string.IsNullOrWhiteSpace(password) || !int.TryParse(id, out idValue)) return false;
 
            bool isValid = false;
            using (var dbConnection = new new OleDbConnection(ConnectionString))
            {
                var dbCmd = new OldDbCommand("SELECT 1 FROM Сотрудники WHERE Сотрудники.[Id работника]=@id AND Сотрудники.Пароль=@pass", cn);
                dbConnection.Open();
                using (var dbReader = dbCmd.ExecuteReader())
                {
                    isValid = dbReader.Read();
                }
            }
            return isValid;
        }
Про шу прощения, но я немного не понял код.
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18422 / 14352 / 5372
Регистрация: 17.03.2014
Сообщений: 29,038
Записей в блоге: 1
28.02.2017, 18:14
Цитата Сообщение от KenjiHoQ Посмотреть сообщение
Про шу прощения, но я немного не понял код.
// по нажатию на кнопку идет запрос, но через отдельную операцию?
Я всего лишь вынес проверку в отдельный метод IsValidIdAndPassword. Он возвращает true если id и пароль верные, в противном случае false.
0
0 / 0 / 1
Регистрация: 06.02.2017
Сообщений: 91
28.02.2017, 18:15  [ТС]
И вместо чего это вставлять?
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
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;
using System.Diagnostics;
 
namespace Курсач
{
    public partial class Form1 : Form
    {
        OleDbConnection cn = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=G:\Visual\Forms\Курсач\Курсач\Bondarkov_kursach.accdb");
        OleDbDataAdapter da;
        DataTable dt = new DataTable();
        public static string user;
        private Form2 form2;
        public Form1()
        {
            InitializeComponent();
            form2 = new Form2(this) { Visible = false };
        }
 
        private void label3_Click(object sender, EventArgs e)
        {
 
        }
 
        private void button1_Click(object sender, EventArgs e)
        {
            string id;
            var da = new OleDbDataAdapter("SELECT Сотрудники.[Id работника], Сотрудники.Пароль FROM Сотрудники WHERE Сотрудники.[Id работника]=@id AND Сотрудники.Пароль=@pass", cn);
            da.SelectCommand.Parameters.Add("@id", OleDbType.Integer).Value = int.Parse(textBox1.Text);
            da.SelectCommand.Parameters.Add("@pass", OleDbType.VarChar).Value = textBox2.Text;
            if (dt.Rows.Count <= 0)
            {
                MessageBox.Show("Введен не верный Id или пароль");
            }
            else if (dt.Rows.Count > 0)
                    {
                id = textBox1.Text;
                MessageBox.Show(id);
                this.Visible = false;
                form2.Visible = true;
            }
        }
    }
}
0
0 / 0 / 1
Регистрация: 06.02.2017
Сообщений: 91
28.02.2017, 18:16  [ТС]
Попытался поставить после
C#
1
2
 public partial class Form1 : Form
    {
Ничего не работает. А при попытке запустить с пустыми textboxами опять открывается окно файла program
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18422 / 14352 / 5372
Регистрация: 17.03.2014
Сообщений: 29,038
Записей в блоге: 1
28.02.2017, 19:13
Цитата Сообщение от KenjiHoQ Посмотреть сообщение
И вместо чего это вставлять?
Вместо метода button1_Click
0
0 / 0 / 1
Регистрация: 06.02.2017
Сообщений: 91
28.02.2017, 23:19  [ТС]
Цитата Сообщение от OwenGlendower Посмотреть сообщение
Вместо метода button1_Click
То есть с 33 строки?

Добавлено через 6 минут
Цитата Сообщение от OwenGlendower Посмотреть сообщение
Вместо метода button1_Click
Вставил, исправил пару ошибок. Теперь если пусто оно выдает message box, а когда я попытался войти под существующими id и паролем он выдал ошибку
An unhandled exception of type 'System.InvalidOperationException' occurred in System.Data.dll
C#
1
2
3
var dbCmd = new OleDbCommand("SELECT 1 FROM Сотрудники WHERE Сотрудники.[Id работника]=@id AND Сотрудники.Пароль=@pass");
                dbConnection.Open();
-------->using (var dbReader = dbCmd.ExecuteReader())
вот эту строку выделил
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18422 / 14352 / 5372
Регистрация: 17.03.2014
Сообщений: 29,038
Записей в блоге: 1
28.02.2017, 23:22
KenjiHoQ, да. Удаляешь код в строках 33-50 и на это место вставляешь мой код.

Добавлено через 2 минуты
Цитата Сообщение от KenjiHoQ Посмотреть сообщение
An unhandled exception of type 'System.InvalidOperationException' occurred in System.Data.dll
Попробуй вот такой запрос подставить тогда
C#
1
"SELECT Сотрудники.[Id работника] FROM Сотрудники WHERE Сотрудники.[Id работника]=@id AND Сотрудники.Пароль=@pass"
Здесь важен не результат запроса, а то что мы получим хотя бы одну строку.
0
0 / 0 / 1
Регистрация: 06.02.2017
Сообщений: 91
28.02.2017, 23:45  [ТС]
Цитата Сообщение от OwenGlendower Посмотреть сообщение
Попробуй вот такой запрос подставить тогда
Точно такая же ошибка
An unhandled exception of type 'System.InvalidOperationException' occurred in System.Data.dll
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18422 / 14352 / 5372
Регистрация: 17.03.2014
Сообщений: 29,038
Записей в блоге: 1
01.03.2017, 13:37
KenjiHoQ, тогда выкладывай полный текст исключения. Его можно получить с помощью отладчика. В помощнике исключений, который появляется при необработанном исключении, есть команда скопировать информацию о исключении в буфер обмена.
0
0 / 0 / 1
Регистрация: 06.02.2017
Сообщений: 91
01.03.2017, 14:08  [ТС]
Цитата Сообщение от OwenGlendower Посмотреть сообщение
тогда выкладывай полный текст исключения. Его можно получить с помощью отладчика. В помощнике исключений, который появляется при необработанном исключении, есть команда скопировать информацию о исключении в буфер обмена.
Спасибо за помощь. Я решил не ипать мозги ни себе, ни вам. Это была не обязательная форма. Я решил обойтись без неё пока. (курсач горит, завтро сдавать)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
01.03.2017, 14:08

System.FormatException
using System; namespace CsLessons { class SumInLoop { public static void Main(string args) { ...

System.FormatException на других ПК
Здравствуйте! &quot;Не догоняю&quot; в чем проблема. Есть мой пк, на котором разрабатываю программу и есть другие, клиентские. Так вот на моём...

System.FormatException FromBase64String
public string this { set { _data.Add(name,...

Ошибка system.formatexception
Помогите разобраться с system.formatexception заранее спасибо int ty; Console.WriteLine(&quot;текст&quot;); while...

Исключение System.FormatException
Очень нужна Ваша помощь! В Visual Studio на винде программа работает нормально, а на маке выдает исключение Код программы ...


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

Или воспользуйтесь поиском по форуму:
30
Ответ Создать тему
Новые блоги и статьи
Программное добавление префикса в нумерацию документов
Maks 27.10.2026
Задача: Программно добавить префикс в нумерацию документов в самописной конфигурации на БСП (помощь начинающему коллеге). Решение: В модуле объекта документа размещен следующий код: Процедура. . .
После закрытия оутлука продолжает висеть процесс в диспетчере задач
Maks 27.10.2026
С недавнего времени в продакшене возникла проблема: при закрытии оутлука в диспетчере задач продолжал висеть процесс outlook. exe. Проблема возникла после установки MS Office 2021 LTSC на машинах, под. . .
Baragoz - DPS/HPS бот для WoW 3.3.5a, многоязычный
AmbA 26.10.2026
Хотите ещё ботов? У меня есть один! А я пока отдохну от него. https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=12062&stc=1&d=1793007952 Инструкция внутри. https:/ / youtu. be/ VpfFZSUDGnQ. . .
Особенности gif сгенерированных в Си
russiannick 21.10.2026
Рассмотрим генерацию gif файлов, которые в Си имеют свои особенности. Gif представляет собой графический формат популярный в интернете. Посмотрим на палитру. Gif файл сгенерированный в си отличается. . .
FPS контроллер с анимированными Y-Bot и 3D-звуком miniaudio (Box3D, Recast, BehaviorTree.CPP, ozz-animation, ImGui, OpenGL и SDL3)
8Observer8 18.10.2026
Содержание блога | English Version Полное мультиплатформенное руководство по стартовому проекту с FPS-контроллером игрока, анимированными роботами Y-Bot с 4-слойным блендингом, 3D-физикой Box3D,. . .
Локальный http сервер
Argus19 17.10.2026
Локальный http сервер На работе, на двух локальных компьютерах круглосуточно работают программы опроса приборов с записью в книги Excel,которые раз в сутки записываются на сервер компании. Т. к. . . .
Копировать Windows на новый диск на UEFI
damix 17.10.2026
https:/ / uriesk. wordpress. com/ 2016/ 11/ 01/ move-window-10-to-ssd-on-a-uefi-dualboot-system-with-basic-linux-tools/ TL DR Вставляем диск, а старый подключаем через переходник, грузимся с лайва. . .
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru