C# 无法在windows窗体datagridview上显示数据库

C# 无法在windows窗体datagridview上显示数据库,c#,postgresql,visual-studio,winforms,C#,Postgresql,Visual Studio,Winforms,我试图在VisualStudioWindows窗体中查看表中的数据库(DgvTabela),但由于某些原因,它没有显示数据 namespace ipcaTeachersPayment { public partial class frmTeachers : Form { private const string Host = "localhost"; private const string User = "apilog"; pr

我试图在VisualStudioWindows窗体中查看表中的数据库(DgvTabela),但由于某些原因,它没有显示数据

namespace ipcaTeachersPayment
{
    public partial class frmTeachers : Form
    {

        private const string Host = "localhost";
        private const string User = "apilog";
        private const string DBname = "gestaoDocentes";
        private const string Password = "raquel";
        private const string Port = "5432";

        private string connstring = String.Format(
                            "Server={0};Username={1};Database={2};Port={3};Password={4};SSLMode=Prefer",
                            Host,
                            User,
                            DBname,
                            Port,
                            Password);

        private NpgsqlConnection conn;
        private string sql;
        private NpgsqlCommand cmd;
        private DataTable dt;
        //private int rowIndex = -1;
        public frmTeachers()

        {
            InitializeComponent();
        }


        private void BtnTeachers_Click(object sender, EventArgs e)
        {
            conn = new NpgsqlConnection(connstring);
            Select();

        }

        private void Select()
        {
            try
            {
                conn.Open();
                sql = @"select * from docen_selecionar()";
                cmd = new NpgsqlCommand(sql, conn);
                dt = new DataTable();
                dt.Load(cmd.ExecuteReader());
                conn.Close();
                dgvTabela.DataSource = null;
                dgvTabela.DataSource = dt;
            }
            catch (Exception ex)
            {

                conn.Close();
                MessageBox.Show("Error: " + ex.Message);
            }
        }

        private void DgvTabela_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {
            if (e.RowIndex >= 0)
            {
                txtName.Text = dgvTabela.Rows[e.RowIndex].Cells["_docente_id"].Value.ToString();
                txtID.Text = dgvTabela.Rows[e.RowIndex].Cells["_nome_docente"].Value.ToString();
            }
        }
    }
}
我不知道它是否必须与BtnTeachers\u Click中的连接有关,我曾试图通过另一个项目实现这种方式,但在插入连接时 conn=新的NpgsqlConnection(connstring); 在frmTeachers\u负载内,但此项目不同


有人能帮我吗?

我们需要确定查询是否返回任何值。数据表dt是否有任何值?在conn.Close()上放置断点;(F11)。然后将鼠标悬停在变量dt上,然后按向下箭头。然后选择表格可视化工具。是的,表格有值(名称和ID号)。我插入了断点,但没有发生任何事情。如果未达到断点,则表不能有值。在到达dt.Load(cmd.ExecuteReader())之前,表不会加载值;我在另一个程序中使用了完全相同的代码和相同的postgresql数据库,它正在工作。唯一的区别是,在另一个程序上,Npgsqlconnection位于类_Load的名称内,如下所示:private void Form1_Load(object sender,EventArgs e){conn=new Npgsqlconnection(connstring);Select();}我尝试使用断点,但没有找到断点。我们需要确定查询是否返回任何值。数据表dt是否有任何值?在conn.Close()上放置断点;(F11)。然后将鼠标悬停在变量dt上,然后按向下箭头。然后选择表格可视化工具。是的,表格有值(名称和ID号)。我插入了断点,但没有发生任何事情。如果未达到断点,则表不能有值。在到达dt.Load(cmd.ExecuteReader())之前,表不会加载值;我在另一个程序中使用了完全相同的代码和相同的postgresql数据库,它正在工作。唯一的区别是,在另一个程序上,Npgsqlconnection位于类_Load的名称内,如下所示:private void Form1_Load(object sender,EventArgs e){conn=new Npgsqlconnection(connstring);Select();}我尝试使用断点,但没有找到