我试图使我的表单包含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”。我更新了代码。
答案 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”事件执行的。 我不知道我是怎么解决的,所以我不会做任何大的文字来解释代码中的每件事。