SQL适配器似乎没有填充数据集

时间:2013-06-17 15:54:46

标签: c# sql sql-server sql-server-2005

我目前正在尝试使用我拥有的数据库来填充数据集。以下代码似乎根本没有填充数据集:

    private static DataSet records = new DataSet();
    public static DataSet LoanersData()
    {
        //query string **add more tables as needed**
        string querystring = "SELECT * FROM LoanerItems; SELECT * FROM Customers; SELECT * FROM Jobs";

        //sql connection
        SqlConnectionStringBuilder scsb = new SqlConnectionStringBuilder();
        scsb.DataSource = "LLOYD2\\";
        scsb.InitialCatalog = "LoanersTest";
        scsb.IntegratedSecurity = true;
        scsb.ConnectTimeout = 30;

        SqlConnection loanersConnection = new SqlConnection(scsb.ConnectionString);

        SqlDataAdapter adapter = new SqlDataAdapter(querystring, loanersConnection);
        adapter.TableMappings.Add("Table", "LoanerItems");
        adapter.TableMappings.Add("Table1", "Customers");
        adapter.TableMappings.Add("Table2", "Jobs");

        adapter.Fill(records);

        return records;
    }

而且:

    {
        InitializeComponent();
        records = DataRetreive.LoanersDataSet.LoanersData();
        LoanerItemsTable = records.Tables["LoanerItems"];
        CustomersTable = records.Tables["Customers"];
        LoanerItemsTable = records.Tables["Jobs"];
    }

我无法确定数据集是否已填充但是在尝试查询其中一个数据表时是这样的:

            IEnumerable<DataRow> query = from LoanerItems in LoanerItemsTable.AsEnumerable() select LoanerItems;
            foreach (DataRow p in query)
            {
                loanerComboBox1.Items.Add(p.Field<string>("BCPartnNumber"));
            }

我没有错误,但组合框中没有添加任何内容。在调试期间,我注意到它无法遍历数据行,因为数据表中没有任何内容。

我正在尝试做什么,我正在做的可能是两件不同的事情。我想至少澄清一下,“BCPartnumber是列的名称。如果需要,我可以提供更多代码,但此时没有其他内容可供提供。

3 个答案:

答案 0 :(得分:3)

如果您尝试填充3个表中的数据集,请分别尝试三个选择语句并更改您的代码,如article

所示

如果您对此有疑问,请与我们联系

答案 1 :(得分:0)

执行您尝试执行的操作的最佳方法是使用查询分析器或SQL Server Management Studio查看LoanerItems表的结构,以验证它是否具有BCPartnNumber字段。

如果数据库中有记录,如果LoanerItems表中没有BCPartnNumber字段,则代码会抛出异常。

答案 2 :(得分:0)

我称之为“5磅重的10磅肉。”您的目标是使用部件填充ComboBox,但您的函数从三个查询返回三个表的DataSet。将LoanersData()函数重构为三个不同的函数,为三组数据返回DataTable(而不是DataSet)。例如,PartsData()用于组合框中所需的零件数据。然后将ComboBox绑定到PartsData()的结果:

loanerComboBox1.DataSource = PartsData();

您还必须设置ComboBox的DisplayMember和ValueMember属性。