Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 04.12.2017, 17:56   #11
Asew
Пользователь
 
Регистрация: 29.08.2017
Сообщений: 25
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
покажите ваш код. Вы npgSqlCommand выполнить не забываете?



в какой таблице Вы ничего не видите?

собственно
должен что-то возвращать, как и любая команда select
Вопрос решился данную тему можно закрывать!

Последний раз редактировалось Asew; 05.12.2017 в 00:16.
Asew вне форума Ответить с цитированием
Старый 05.12.2017, 13:05   #12
Asew
Пользователь
 
Регистрация: 29.08.2017
Сообщений: 25
По умолчанию

Продолжение))

итак в результате добавление в запрос незамысловатой записи:


Код:
NpgsqlDataReader dr = npgSqlCommand.ExecuteReader(); 

if (dr.HasRows)
                {
                    while (dr.Read())
                        Console.Write("{0} \n", dr[0]);
                 
                }
Запись таки осуществилась, но теперь мне бы хотелось проверочку сделать на предмет наличия значения '0' для dr.

и если я напишу

Код:
IF (dr > 0)
Console.WriteLine ("Успех");

Else

Console.WriteLine ("Неудача");
То у меня вылетает ошибка, что невозможно объект dr сравнивать!

Кроме того,

dr мне как-то надо передать в другую процедуру, предварительно используя при этом другой набор static void.
Asew вне форума Ответить с цитированием
Старый 05.12.2017, 13:26   #13
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

Цитата:
Сообщение от Asew Посмотреть сообщение
мне бы хотелось проверочку сделать на предмет наличия значения '0' для dr.
простите, а что означает '0' для dr ?

dr - это набор данных, который вернул запрос. Что Вы хотите проверить?

и ещё не забывайте о таком моменте. Потенциально запрос Select может вернуть не одну строку данных, а МНОГО строк.

что у Вас в консоли возвращает ваш запрос
Код:
SELECT my_procedure_in_postgres ('a',to_date('2010.10.10.10','YYYY.MM.DD.HH24')), 'test')
??

а так, если Вы хотите проверить значение в первой строке выборки данных,
наверное, можно так написать:
Код:
NpgsqlDataReader dr = npgSqlCommand.ExecuteReader(); 

bool isSuccess=false;
if (dr.HasRows)
                {
                    if (dr.Read()){
                           isSuccess=Int32.Parse(reader[0].ToString())>0;
                    }               
                }

Console.WriteLine (isSuccess?"Успех":"Неудача");
Serge_Bliznykov вне форума Ответить с цитированием
Старый 05.12.2017, 14:02   #14
Asew
Пользователь
 
Регистрация: 29.08.2017
Сообщений: 25
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
простите, а что означает '0' для dr ?

dr - это набор данных, который вернул запрос. Что Вы хотите проверить?

и ещё не забывайте о таком моменте. Потенциально запрос Select может вернуть не одну строку данных, а МНОГО строк.

что у Вас в консоли возвращает ваш запрос
Код:
SELECT my_procedure_in_postgres ('a',to_date('2010.10.10.10','YYYY.MM.DD.HH24')), 'test')
??

а так, если Вы хотите проверить значение в первой строке выборки данных,
наверное, можно так написать:
Код:
NpgsqlDataReader dr = npgSqlCommand.ExecuteReader(); 

bool isSuccess=false;
if (dr.HasRows)
                {
                    if (dr.Read()){
                           isSuccess=Int32.Parse(reader[0].ToString())>0;
                    }               
                }

Console.WriteLine (isSuccess?"Успех":"Неудача");
возвращается одна строка, в частности my_index с типом numeric.

Спасибо за код - это работает!
Но я почему хотел записать в переменную результат запроса потому что дальше надо использовать новый

public static void MY_Export_NEW(numeric my_index, string C, , string D)

в котором будет использован my_index.

Поэтому и вопрос как передать результат запроса в переменную типа int и записать public static void MY_Export_NEW, потому что если я запишу

Код:
NpgsqlDataReader dr = npgSqlCommand.ExecuteReader(); 

int isSuccess;
if (dr.HasRows)
                {
                    if (dr.Read()){
                           isSuccess=Int32.Parse(reader[0].ToString())>0;
                    }               
                }

Console.WriteLine (isSuccess?"Успех":"Неудача");

public static void MY_Export_NEW(numeric isSuccess, string C, , string D)
ничего работать не будет(
Asew вне форума Ответить с цитированием
Старый 05.12.2017, 14:18   #15
Asew
Пользователь
 
Регистрация: 29.08.2017
Сообщений: 25
По умолчанию

Тут еще момент вот в чем у нас
Код:
public static void MY_Export(string A, string date, string MYOwn)
{
}
и если записать

Код:
public static void MY_Export_NEW(numeric isSuccess, string C, string D)

{
}
то из первого void-а (как результат запроса ) во второй не передастся isSucces, потому что не global переменная...а как сделать чтобы во второй void эта переменная зашла
Asew вне форума Ответить с цитированием
Старый 05.12.2017, 14:33   #16
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

Цитата:
Сообщение от Asew Посмотреть сообщение
Код:
Console.WriteLine (isSuccess?"Успех":"Неудача");

public static void MY_Export_NEW(numeric isSuccess, string C, , string D)
ничего работать не будет(
Это что за ужас, летящий на крыльях ночи?!
Как это Вы описываете прототип метода ПОСЕРЕДИНЕ кода (внутри друого метода)?!
Это кто Вас так учил?
так нельзя на C# писать.


Цитата:
Сообщение от Asew Посмотреть сообщение
то из первого void-а (как результат запроса ) во второй не передастся isSucces
простите, я не понимаю, что за "первый void", "второй void"...

попробуйте сначала разобраться со структурой программы.
без всяких запросов, просто напишите
Код:
int myValue = 1;
а уже потом используйте запрос и это "сакраментальное"
Код:
myValue=Int32.Parse(reader[0].ToString());
Serge_Bliznykov вне форума Ответить с цитированием
Старый 05.12.2017, 14:47   #17
Asew
Пользователь
 
Регистрация: 29.08.2017
Сообщений: 25
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
Это что за ужас, летящий на крыльях ночи?!
Как это Вы описываете прототип метода ПОСЕРЕДИНЕ кода (внутри друого метода)?!
Это кто Вас так учил?
так нельзя на C# писать.



простите, я не понимаю, что за "первый void", "второй void"...

попробуйте сначала разобраться со структурой программы.
без всяких запросов, просто напишите
Код:
int myValue = 1;
а уже потом используйте запрос и это "сакраментальное"
Код:
myValue=Int32.Parse(reader[0].ToString());
так я знаю, что так писать нельзя и это не допускается, написал просто для того чтобы вам понятнее было куда передать хочу, сам синтаксис естественно некорректен
Asew вне форума Ответить с цитированием
Старый 05.12.2017, 15:27   #18
Asew
Пользователь
 
Регистрация: 29.08.2017
Сообщений: 25
По умолчанию

С передачей разобрался, все ок. Все отлично работает через 2 класса с созданием дополнительной переменной.
Asew вне форума Ответить с цитированием
Старый 06.12.2017, 00:07   #19
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,520
По умолчанию

Если у вас функция возвращает число и это число нужно получить, то вместо ExecuteReader нужно использовать метод ExecuteScalar.
просто:
Код:
int i = (int) npgSqlCommand.ExecuteScalar();
pu4koff вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Массивы - Спроектировать и разработать классы Запись в блокноте и Блокнот. Реализовать методы: Добавить запись, Удалить запись, Редактировать запись SashaRozhkov Помощь студентам 0 05.08.2017 19:16
PostgreSQL 5cek БД в Delphi 17 08.04.2014 12:45
Делфи и Postgresql maximus116 БД в Delphi 2 28.08.2012 11:53
Запись данных в таблицу PostgreSQL nec117 PHP 8 07.08.2010 13:18
Qt+PostgreSQL almareta Qt и кроссплатформенное программирование С/С++ 0 06.08.2010 10:30