C# 在DataGridView中显示SQL中的表
我创建了一个名为charityah的数据库,其中包含5个表。他们的名字列在一个组合框中 当我选择其中一个时,我希望在DataGridView中显示它们的内容 我尝试的是:首先,我将DataGridView链接到此数据库,并尝试了我发现的以下代码:C# 在DataGridView中显示SQL中的表,c#,C#,我创建了一个名为charityah的数据库,其中包含5个表。他们的名字列在一个组合框中 当我选择其中一个时,我希望在DataGridView中显示它们的内容 我尝试的是:首先,我将DataGridView链接到此数据库,并尝试了我发现的以下代码: SqlConnection connection = new SqlConnection(); private void comboBox1_SelectedIndexChanged(object sender, EventArgs e) {
SqlConnection connection = new SqlConnection();
private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
string s = comboBox1.Text;
connection.ConnectionString = @"Data Source=(LocalDB)\v11.0;AttachDbFilename=C:\Users\Downloads\charityah.mdf;Integrated Security=True";
using (connection)
{
connection.Open();
SqlDataAdapter adapter = new SqlDataAdapter("select * from "+s, connection);
DataSet ds = new DataSet();
adapter.Fill(ds, s);
dataGridView1.DataSource = ds.Tables[0];
dataGridView1.Refresh();
}
}
这个方法不会给我任何错误,它会找到表,但在DataGridView中什么也看不到 因为您报告(注释)有行,所以听起来主要问题(连接处理除外)是数据绑定问题。我突然想到几点:
- 表是否处于虚拟模式
- 是添加列吗
- 列是否已经存在
dataGridView1.VirtualMode = false;
dataGridView1.Columns.Clear();
dataGridView1.AutoGenerateColumns = true;
在会议之前:
dataGridView1.DataSource = ds.Tables[0];
您可能还需要检查dataGridView1.DataMember
是否未分配值。由于您报告(注释)有行,所以听起来主要问题(连接处理除外)是数据绑定问题。我突然想到几点:
- 表是否处于虚拟模式
- 是添加列吗
- 列是否已经存在
dataGridView1.VirtualMode = false;
dataGridView1.Columns.Clear();
dataGridView1.AutoGenerateColumns = true;
在会议之前:
dataGridView1.DataSource = ds.Tables[0];
您可能还需要检查
dataGridView1.DataMember
是否未分配值。试试这个,有时无意义的项目确实会造成很多混乱。因此,请尝试将“自动生成列”设置为true。愿这一切开始向你展示结果。因为根据你的评论,似乎还有其他问题。那就试试吧
dataGridView1.AutoGenerateColumns=true 试试这个,有时候无意义的东西确实会造成很多混乱。因此,请尝试将“自动生成列”设置为true。愿这一切开始向你展示结果。因为根据你的评论,似乎还有其他问题。那就试试吧
dataGridView1.AutoGenerateColumns=true
ds.Tables[0].Rows.Count在Fill(ds,s)
之后报告了什么?另外:我想知道这其中有多少与您(在事件处理程序中)处理一个存在时间更长的对象(作为字段)有关。您有一个连接
实例,每次使用它时都可以Dispose()
(通过使用
)。。。保证第二次不起作用。。。(就我个人而言,我会通过删除该字段并将new Connection()
移动到方法中来解决这个问题,即使用(var Connection=new SqlConnection(cs)){…}
ds.Tables[0].Rows.Count给了我存在的行数..我不明白你说的最后一句话,但我把SqlConnection=new SqlConnection();在methode内部,我使用而不是使用(connection)connection.open()和connection.close()你只需要处理一次,一旦处理完毕,它就是toast。通过在字段上使用use
,你就注定了连接处的对象在第一次通过该事件处理程序后将毫无用处。你可以多次打开/关闭对象,但处理是非常致命的。什么是ds.Tables[0].Rows.Count
在填充(ds,s)
后报告?另外:我想知道这其中有多少与您(在事件处理程序中)处理一个存在时间长于此值的对象(作为字段)有关。您有一个连接
实例,您可以处理它()
(通过使用
)每次使用它时…保证第二次不起作用…(我个人会通过删除该字段并将new Connection()
移动到方法中来解决这个问题,即使用(var Connection=new SqlConnection(cs)){…}
ds.Tables[0].Rows.Count给了我存在的行数..我不明白你说的最后一句话,但我将SqlConnection connection=new SqlConnection();放在methode中,我使用而不是使用(connection)connection.open()和connection.close()你只需要处理一次东西;一旦你处理完,它就是toast。通过在一个字段上使用use
,你就注定了connection
上的对象在第一次通过该事件处理程序之后就没用了。你可以多次打开/关闭东西,但处理是非常致命的。太多了:D这个问题让我头疼:这个问题让我头疼