-2

現在、私が持っているデータベースを使用してデータセットを埋めようとしています。次のコードは、データセットをまったく埋めていないようです。

    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"];
    }

データセットがいっぱいかどうかはわかりませんが、次のようにデータテーブルの 1 つにクエリを実行しようとすると、次のようになります。

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

エラーは発生しませんが、コンボボックスには何も追加されません。デバッグ中に、データテーブルに何もないため、データ行をループできないことに気付きました。

私がやろうとしていることと、私がしていることは、2 つの異なることかもしれません。少なくとも、テーブルで「BCPartnumber は列の名前です。必要に応じてさらにコードを提供できますが、現時点では他に提供することはあまりありません。

4

3 に答える 3

3

3 つのテーブルからデータセットを埋めようとしている場合は、3 つの select ステートメントを別々に試して、この記事に示されているようにコードを変更してください。

これについて質問がある場合はお知らせください

于 2013-06-17T16:41:08.140 に答える
0

私はこれを「5ポンドの袋に10ポンドの肉」と呼んでいます. あなたの目標は ComboBox にパーツを設定することですが、関数は 3 つのクエリから 3 つのテーブルの DataSet を返します。LoanersData() 関数を、3 つのデータ セットの DataTable (DataSet ではなく) を返す 3 つの異なる関数にリファクタリングします。たとえば、ComboBox に必要なパーツ データの PartsData() です。次に、ComboBox を PartsData() の結果にバインドします。

loanerComboBox1.DataSource = PartsData();

ComboBox の DisplayMember プロパティと ValueMember プロパティも設定する必要があります。

于 2013-06-17T16:54:21.817 に答える
0

実行しようとしていることを実行する最善の方法は、クエリ アナライザーまたは SQL Server Management Studio を使用して LoanerItems テーブルの構造を調べ、BCPartnNumber フィールドがあることを確認することです。

データベースにレコードがある場合、LoanerItems テーブルに BCPartnNumber フィールドがないと、コードは例外をスローします。

于 2013-06-17T16:02:13.863 に答える