返回“ SELECT” SQL命令

时间:2019-10-02 20:14:28

标签: c# postgresql npgsql

我试图使我的表单包含Postgres数据库表的所有行,为此,我正在使用具有2列(名称和密码)的DataGridView,并在数据库中搜索值。但是我是新手,我也不知道如何获取db数据并将其放入DataGrid。

基本上,我想在C#应用程序表单中显示相同的pgAdmin可视表。

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();
        }
    }

我参加了代码from here

我认为它应该可以工作,但是当我跑步时我得到一个System.StackOverflowException

Edit1:我解决了溢出问题,但是现在的问题是dataGridView1.DataSource = Postgre.listUsers()中的“ System.NullReferenceException”。我更新了代码。

2 个答案:

答案 0 :(得分:0)

尝试:

dataGridView1.DataSource =阅读器;

答案 1 :(得分:0)

我解决了,怎么办?我不知道,但是我解决了:

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”是通过tabControl1上的“ Enter”事件执行的。 我不知道我是怎么解决的,所以我不会做任何大的文字来解释代码中的每件事。