Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
0 / 0 / 0
Регистрация: 14.10.2020
Сообщений: 55

Ссылка на объект не указывает на экземпляр объекта

06.06.2022, 17:11. Показов 1520. Ответов 3

Студворк — интернет-сервис помощи студентам
Здравствуйте! Работаю с бд Postgresql на c#. Нахожу id пользователя в одной таблице, и хочу по нему найти номер проекта в другой. Выдается ошибка "Ссылка на объект не указывает на экземпляр объекта". Что не правильно, как исправить?Строка 89 "string getProjID = cmd.ExecuteScalar().ToString();"
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
using Npgsql;
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 Microsoft.Office.Interop;
using Excel = Microsoft.Office.Interop.Excel;
using Microsoft.Office.Interop.Excel;
using DataTable = System.Data.DataTable;
 
namespace Конструктор_отчетов_1_вариант
{
 
 
    public partial class Form1 : Form
    {
        private string connstring = String.Format("Server={0};Port={1};" + "User Id={2};Password={3};Database={4};", "localhost", "5432", "postgres", "123", "Otchet");
        private NpgsqlConnection conn;
        private string sql;
        private NpgsqlCommand cmd;
        private DataTable dt;
        public Form1()
        {
            InitializeComponent();
        }
 
        private void checkBox1_CheckedChanged(object sender, EventArgs e)
        {
 
        }
 
        private void Form1_Load(object sender, EventArgs e)
        {
            conn = new NpgsqlConnection(connstring);
            Select();
 
        }
        private void Select()
        {
            try
            {
                conn.Open();
                sql = @"SELECT name FROM projects WHERE id=12";
                cmd = new NpgsqlCommand(sql, conn);
                dt = new DataTable();
                dt.Load(cmd.ExecuteReader());
                conn.Close();
                // dgvData = null;
                //dgvData.DataSourse = null;
                //dgvData.DataSourse = dt;
            }
            catch (Exception Ex)
            {
                conn.Close();
                MessageBox.Show("Error!");
            }
        }
 
        private void button1_Click(object sender, EventArgs e)
        {
            if ((textBox1.Text == "") || (comboBox1.SelectedIndex == -1)) MessageBox.Show("Вы не заполнили поля");
            else
            {
                conn.Open();
                sql = @"SELECT id FROM users WHERE login='"+textBox1.Text+"'";
                
                cmd= new NpgsqlCommand(sql, conn);
                //MessageBox.Show(cmd.CommandText);
                string getValue = "-1";
                getValue = cmd.ExecuteScalar().ToString();
                if (getValue == "-1") MessageBox.Show("Такого логина не существует");
                else
                {
                    Microsoft.Office.Interop.Excel.Application bd = new Microsoft.Office.Interop.Excel.Application();
                    bd.Workbooks.Add();
                    bd.Visible = true;
                    Worksheet workSheet = (Excel.Worksheet)bd.ActiveSheet;
                    Excel.Range _excelCells1 = (Excel.Range)workSheet.get_Range("A1", "Z1").Cells;
                    // Производим объединение
                    _excelCells1.Merge(Type.Missing);
                    bd.Cells[1, 1] = "Отчет за " + comboBox1.Text + " сотрудника " + textBox1.Text;
                    sql = @"SELECT project_id FROM time_entries WHERE user_id='" + getValue + "'";
                    cmd = new NpgsqlCommand(sql, conn);
                    string getProjID = cmd.ExecuteScalar().ToString(); 
                    int count = 2;
                    bd.Cells[count, 1] = "Проект " + getValue;
                }
            }
        }
 
        private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
        {
 
        }
    }
}
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
06.06.2022, 17:11
Ответы с готовыми решениями:

Ссылка на объект не указывает на экземпляр объекта
При попытке нажатия по кнопке происходит ошибка: System.NullReferenceException: "Ссылка на объект не указывает на экземпляр...

Ссылка на объект не указывает на экземпляр объекта
Здравствуйте! !Подскажите ПОЖАЛУЙСТА В ЧЕМ ПРОБЛЕМА?Выдает ошибку System.NullReferenceException: "Ссылка на объект не указывает на...

Ссылка на объект не указывает на экземпляр объекта
Всем ночи, пишу небольшую программу с формами и возникла проблема что есть отдельная форма авторизаций, после прохождения открывается...

3
548 / 355 / 120
Регистрация: 17.08.2014
Сообщений: 1,351
06.06.2022, 17:30
pomogitepojaluy, это означает что метод ExecuteScalar() вернул вам Null так как такого id видимо нет в базе, а вы его сразу преобразуете в строку. но так как там объекта нет то у вас и вылетает исключение что ссылка на объект не указывает на экземпляр объекта (по другому она не инициализирована)

что то типо object result = null;
если вы сделаете result.ToString() то получите такое же исключение.
1
1341 / 920 / 265
Регистрация: 08.08.2014
Сообщений: 2,768
06.06.2022, 18:17
C#
1
string getProjID = cmd.ExecuteScalar()?.ToString() ?? "<проект не найден>";
0
0 / 0 / 0
Регистрация: 14.10.2020
Сообщений: 55
07.06.2022, 01:05  [ТС]
Спасибо большое, исправила, получилось! Скажите ещё, пожалуйста, в каком виде сохраняется результат select, если выходит несколько строчек? Как с ними дальше работать? То есть, вот мне пришло несколько строк подходящих, и мне нужно каждую из них в excel поместить. К ним как-то можно обращаться?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
07.06.2022, 01:05
Помогаю со студенческими работами здесь

Ссылка на объект не указывает на экземпляр объекта
Всем привет, предыстория такая: Я создал окно в Windows Form с выводом БД, добавлением записей, удалением, редактированием. Все...

Ссылка на объект не указывает на экземпляр объекта
Здравствуйте!Проблема вот в чем. Перешел я c ListBox на ListView.Все изменил, все робит,но в некоторых местах выдает ошибку при отладке. ...

Ссылка на объект не указывает на экземпляр объекта
public class myButton { private PaintEventArgs l; public event PaintEventHandler Drawing; public event...

Ссылка на объект не указывает на экземпляр объекта
Народ прошу помочь есть хранимая процедура с вызовом параметра сам по себе работает но в программке выдает ошибку (Ссылка на объект не...

Ссылка на объект не указывает на экземпляр объекта
Есть такой код private void users_Load(object sender, EventArgs e) { getData(); } private...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
Использование значений реквизитов справочника в документе, с определенными условиями и правами
Maks 07.04.2026
1. Контроль срока действия договора Алгоритм из решения ниже реализован на примере нетипового документа "ЗаявкаНаРаботу", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru