C# 联接查询在sql server 2008中工作,无法在datagridview中加载数据仅显示标题
我正在尝试根据从组合框中选择的值从SQLServer2008中创建的不同表加载数据。我已经为同样的问题编写了查询,它在SQLServer2008中工作得很好,但没有在datagridview中加载任何数据,而是显示了数据库中所需数据字段的标题 我完全震惊了,没有错误。应用程序运行完全正常。甚至查询本身也可以在查询生成器中执行 所以我请求你们帮我解决这个问题。提前感谢您的帮助 代码如下:C# 联接查询在sql server 2008中工作,无法在datagridview中加载数据仅显示标题,c#,sql,sql-server,join,datagridview,C#,Sql,Sql Server,Join,Datagridview,我正在尝试根据从组合框中选择的值从SQLServer2008中创建的不同表加载数据。我已经为同样的问题编写了查询,它在SQLServer2008中工作得很好,但没有在datagridview中加载任何数据,而是显示了数据库中所需数据字段的标题 我完全震惊了,没有错误。应用程序运行完全正常。甚至查询本身也可以在查询生成器中执行 所以我请求你们帮我解决这个问题。提前感谢您的帮助 代码如下: public partial class ViewTimeTable : Form { SqlComman
public partial class ViewTimeTable : Form
{
SqlCommand cm = new SqlCommand();
DataAccess da = new DataAccess();
int d_id, y_id;
public ViewTimeTable()
{
InitializeComponent();
}
private void btnLoad_Click(object sender, EventArgs e)
{
try
{
d_id = Convert.ToInt32(cmbDepartment.SelectedValue);
y_id = Convert.ToInt32(cmbDepartment.SelectedValue);
SqlDataAdapter dap=null;
string query = "SELECT TimeTable.Day,TimeTable.FromTime,TimeTable.ToTime,
Teachers.TName,Subject.SubName FROM (TimeTable INNER JOIN Teachers ON
TimeTable.T_id = Teachers.T_id INNER JOIN Subject ON TimeTable.Sub_id =
Subject.Sub_id) Where TimeTable.D_id=" + d_id + " AND TimeTable.Y_id=" +
y_id + "";
cm.CommandText = query;
da.Action(cm);
dap=da.GetDataAdapter(cm);
DataTable table = new DataTable();
dap.Fill(table);
dataGridView1.DataSource = table;
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
}
当我阅读代码时,我看到:
d_id = Convert.ToInt32(cmbDepartment.SelectedValue);
y_id = Convert.ToInt32(cmbDepartment.SelectedValue);
在我看来,它们将d_id
和y_id
设置为相同的值。我怀疑您希望将它们设置为不同的值
查询不起作用的原因是没有行符合条件。如果在变量替换后打印查询,问题将显而易见。我已编辑了您的标题。请参阅“”,其中的共识是“不,他们不应该”。其他更简单的查询是否有效?您确定您连接到同一个数据库吗?并且,您是否可以编辑问题以包含变量替换后的查询(打印出
query
)。我怀疑问题在于数据库或变量被插入字符串中。@RBarryYoung是的,当然简单查询可以工作@GordonLinoff是的,我连接到同一个数据库。如果按照您的说法,数据库中存在问题,那么为什么查询在同一解决方案中的查询生成器中工作。对于查询,只需在上面的查询中替换did=1和yid=1,并删除变量和“”,谢谢gordon!这么简单的错误,我却没能发现。这就是测试工作的方式,不同的眼睛可以发现不同的错误。有时甚至我们也会犯愚蠢的错误。很抱歉给您添麻烦,谢谢您的帮助。