C# 组合框未通过SQL数据适配器更新

C# 组合框未通过SQL数据适配器更新,c#,sql,combobox,dataadapter,C#,Sql,Combobox,Dataadapter,我有一个奇怪的问题,我不知道这是否是由于坏连接或其他原因造成的。 问题是,我有一个组合框,我正在“Form Load”事件中使用SQL数据表填充值,直到今天它还可以正常工作。每次加载表单时,两个组合框都为空,一个为日期,另一个为公司名称。下面是我正在使用的代码 public DataTable getResult(string query) { SqlDataAdapter da = new SqlDataAdapter(); DataTable dt =

我有一个奇怪的问题,我不知道这是否是由于坏连接或其他原因造成的。 问题是,我有一个组合框,我正在“Form Load”事件中使用SQL数据表填充值,直到今天它还可以正常工作。每次加载表单时,两个组合框都为空,一个为日期,另一个为公司名称。下面是我正在使用的代码

public DataTable getResult(string query)
    {
        SqlDataAdapter da = new SqlDataAdapter();
        DataTable dt = new DataTable();
        SqlCommand cmd = new SqlCommand(query, con);
        cmd.CommandTimeout = 0;
        da.SelectCommand = cmd;
        da.Fill(dt);
        return dt;
    }
private void Reports_Load(object sender, EventArgs e)
    {
        RevenueDate_dt = func.getResult(dateQuery);

        foreach (DataRow dr in RevenueDate_dt.Rows)
        {
            comboBox1.Items.Add(dr["Global_Period_Month"].ToString());
        }

        Gpn_dt = func.getResult(GpnQuery);

        foreach (DataRow dr in Gpn_dt.Rows)
        {
            comboBox2.Items.Add(dr["gpnname"].ToString());
        }
    }
当我在SQL Server上执行查询时,显示完美结果的查询。
期待答案。

很难说发生了什么,但我想知道datatable对于您想要的是否有点过分。看起来普通的数据读取器的开销要小得多,并且更容易调试。大概是这样的:

public string[] getResult(string query, string ColumnName)
{
    List<string> results = new List<string>();

    SqlCommand cmd = new SqlCommand(query, con);
    cmd.CommandTimeout = 0;

    SqlDataReader reader = cmd.ExecuteReader();
    int col = reader.GetOrdinal(ColumnName);
    while (reader.Read())
    {
        results.Add(reader.GetString(col));
    }

    reader.Close();

    return results.ToArray();
}
comboBox1.Items.AddRange(func.getResult(dateQuery, "Global_Period_Month"));
comboBox2.Items.AddRange(func.getResult(GpnQuery, "gpnname"));

很难说发生了什么,但我想知道datatable对于您想要的是否有点过分。看起来普通的数据读取器的开销要小得多,并且更容易调试。大概是这样的:

public string[] getResult(string query, string ColumnName)
{
    List<string> results = new List<string>();

    SqlCommand cmd = new SqlCommand(query, con);
    cmd.CommandTimeout = 0;

    SqlDataReader reader = cmd.ExecuteReader();
    int col = reader.GetOrdinal(ColumnName);
    while (reader.Read())
    {
        results.Add(reader.GetString(col));
    }

    reader.Close();

    return results.ToArray();
}
comboBox1.Items.AddRange(func.getResult(dateQuery, "Global_Period_Month"));
comboBox2.Items.AddRange(func.getResult(GpnQuery, "gpnname"));

在“return dt”中放置断点。datatable看起来像什么。它显示的是第80行,没有表名!组合框仍然为空。查询正常,连接正常。在“return dt”中放置一个断点。datatable看起来像什么。它显示的是第80行,没有表名!组合框仍然是空的。查询很好,连接很好。谢谢@Hambone,是的,前天对我来说这也是一个非常典型的情况。代码工作正常,但后来崩溃了,但无论如何,谢谢你的回答,代码现在对我有效。感谢您的回复。感谢您的反馈。数据表是一把双刃剑。非常有用,可以处理很多重物,但它们有一些粗糙的边缘。我很高兴这对你有用。谢谢@Hambone,是的,这是一个非常典型的情况,前天对我来说也是如此。代码工作正常,但后来崩溃了,但无论如何,谢谢你的回答,代码现在对我有效。感谢您的回复。感谢您的反馈。数据表是一把双刃剑。非常有用,可以处理很多重物,但它们有一些粗糙的边缘。我很高兴这对你有用。