Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 联接查询在sql server 2008中工作,无法在datagridview中加载数据仅显示标题_C#_Sql_Sql Server_Join_Datagridview - Fatal编程技术网

C# 联接查询在sql server 2008中工作,无法在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

我正在尝试根据从组合框中选择的值从SQLServer2008中创建的不同表加载数据。我已经为同样的问题编写了查询,它在SQLServer2008中工作得很好,但没有在datagridview中加载任何数据,而是显示了数据库中所需数据字段的标题

我完全震惊了,没有错误。应用程序运行完全正常。甚至查询本身也可以在查询生成器中执行

所以我请求你们帮我解决这个问题。提前感谢您的帮助

代码如下:

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!这么简单的错误,我却没能发现。这就是测试工作的方式,不同的眼睛可以发现不同的错误。有时甚至我们也会犯愚蠢的错误。很抱歉给您添麻烦,谢谢您的帮助。