Возврат "SELECT" sql команда - PullRequest
0 голосов
/ 02 октября 2019

Я пытаюсь, чтобы моя форма содержала все строки таблицы базы данных Postgres, для этого я использую DataGridView с 2 столбцами (имя и пароль) и ищу в базе данных значения. Но я новичок в этом, и я не знаю, как взять данные из БД и поместить их в DataGrid.

По сути, я хотел, чтобы такая же визуальная таблица pgAdmin была показана в моей форме приложения на C #.

Postgre.cs:

public static NpgsqlDataReader listUsers()
        {
            string sqlCommand = "SELECT name, senha FROM users";
            NpgsqlCommand cmd = new NpgsqlCommand(sqlCommand, Connect());

            NpgsqlDataReader reader = cmd.ExecuteReader();

            return reader;
        }

frmAdmin:

public partial class frmAdmin : Form
    {
        public frmAdmin()
        {
            dataGridView1.DataSource = Postgre.listUsers();
            InitializeComponent();
        }
    }

Я принял участие в коде отсюда

Я думаю, что это должно работать, но когда я запускаю, я получаю System.StackOverflowException.

Edit1: я решил проблему переполнения, но теперь проблема - «System.NullReferenceException», в dataGridView1.DataSource = Postgre.listUsers(). Я обновил код.

Ответы [ 2 ]

0 голосов
/ 03 октября 2019

Я решил, как? я не знаю, но я решил:

Postgre.cs:

public static DataTable listUsers()
        {
            string sqlCommand = "SELECT name, senha FROM users";
            NpgsqlDataAdapter da = new NpgsqlDataAdapter(new NpgsqlCommand(sqlCommand, Connect()));

            DataTable dt = new DataTable();
            da.Fill(dt);
            return dt;
        }

и ... frmAdmin.cs:

private void listUsersGrid(object sender, EventArgs e)
        {
            dataGridView1.DataSource = Postgre.listUsers();
        }

"ListUsersGrid" - этовыполняется с событием "Enter" на tabControl1. я не знаю, как я решил это, поэтому я не буду делать гигантский текст, объясняющий каждую вещь в коде.

0 голосов
/ 02 октября 2019

попробуйте:

dataGridView1.DataSource = reader;

...