Место общения программистов C#
Anonymous
Заполнение DataGrid Winforms с использованием хранимой процедуры Postgres
Сообщение
Anonymous » 08 сен 2025, 12:04
Я пытаюсь получить данные из таблицы Postgres с помощью хранимой процедуры и заполнить с ним данные Winforms.
Код: Выделить всё
CREATE OR REPLACE PROCEDURE public.get_list()
LANGUAGE sql
BEGIN ATOMIC
SELECT field1,
field2,
field3
FROM some_table;
END;
< /code>
Вот мой код c#: < /p>
DataTable dtt = new DataTable();
string ConString = "Server=x.xxx.xx.xxx;Port=5432;User Id=xxx;Password=xxx;Database=xxx;";
NpgsqlConnection connection = new NpgsqlConnection(ConString);
connection.Open();
NpgsqlCommand cmd = new NpgsqlCommand("CALL public.get_list()");
try
{
cmd.Connection = connection;
cmd.CommandType = System.Data.CommandType.StoredProcedure;
using (var dataReader = cmd.ExecuteReader())
{
if (dataReader.HasRows)
{
GridView.Visible = true;
dtt.Load(dataReader);
GridView.DataSource = dtt;
GridView.Update();
}
}
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
< /code>
После выполнения этого кода DataReader < /code> возвращает 0 строк.
Хранитованная процедура ничего не возвращает: Fiddle < /p>
CALL public.get_list();
< /code>
CALL
Что я делаю неправильно?>
Подробнее здесь:
https://stackoverflow.com/questions/797 ... -procedure
1757322245
Anonymous
Я пытаюсь получить данные из таблицы Postgres с помощью хранимой процедуры и заполнить с ним данные Winforms.[code]CREATE OR REPLACE PROCEDURE public.get_list() LANGUAGE sql BEGIN ATOMIC SELECT field1, field2, field3 FROM some_table; END; < /code> Вот мой код c#: < /p> DataTable dtt = new DataTable(); string ConString = "Server=x.xxx.xx.xxx;Port=5432;User Id=xxx;Password=xxx;Database=xxx;"; NpgsqlConnection connection = new NpgsqlConnection(ConString); connection.Open(); NpgsqlCommand cmd = new NpgsqlCommand("CALL public.get_list()"); try { cmd.Connection = connection; cmd.CommandType = System.Data.CommandType.StoredProcedure; using (var dataReader = cmd.ExecuteReader()) { if (dataReader.HasRows) { GridView.Visible = true; dtt.Load(dataReader); GridView.DataSource = dtt; GridView.Update(); } } } catch (Exception ex) { MessageBox.Show(ex.ToString()); } < /code> После выполнения этого кода DataReader < /code> возвращает 0 строк. Хранитованная процедура ничего не возвращает: Fiddle < /p> CALL public.get_list(); < /code> CALL [/code] Что я делаю неправильно?> Подробнее здесь: [url]https://stackoverflow.com/questions/79756998/filling-winforms-datagrid-using-postgres-stored-procedure[/url]