在单个数据集中填充两个数据表

本文关键字:两个 数据表 填充 单个 数据 数据集 集中 | 更新日期: 2023-09-27 17:57:01

我有一个DataSet.xsd文件,在这个文件中我有两个DataTable一个是Bill,另一个是BillInfo现在,我正在编写此代码

string qry = "Select * from BillInfo where [BillNumber]='" +txtbill.Text + "' and [Session]='"+CLS.ses+"'";
        OleDbDataAdapter da = bm.returnDataAdaptor(qry);
        DataSet ds1 = new DataSet();
        da.Fill(ds1);
        DataSets.Bill ds = new DataSets.Bill();
        da.Fill(ds);
        DataTable Dt1 = ds1.Tables[0];
        DataTable dt = ds.Tables.Add("BillInfo");
        dt.Columns.Add("BillNumber", Type.GetType("System.String"));
        dt.Columns.Add("CustomerName", Type.GetType("System.String"));
        dt.Columns.Add("City", Type.GetType("System.String"));
        dt.Columns.Add("Mobile", Type.GetType("System.String"));
        dt.Columns.Add("TotalAmount", Type.GetType("System.String"));
        dt.Columns.Add("Packing", Type.GetType("System.String"));
        dt.Columns.Add("Tax", Type.GetType("System.String"));
        dt.Columns.Add("Transport", Type.GetType("System.String"));
        dt.Columns.Add("Additional", Type.GetType("System.String"));
        dt.Columns.Add("PaybleAmount", Type.GetType("System.Int32"));
        dt.Columns.Add("Session", Type.GetType("System.String"));
        dt.Columns.Add("Date1", Type.GetType("System.DateTime"));
        dt.Columns.Add("Naration", Type.GetType("System.String"));
        dt.Columns.Add("AmountWord", Type.GetType("System.String"));
        dt.Columns.Add("Status", Type.GetType("System.String"));
        dt.Columns.Add("Balance", Type.GetType("System.Int32"));
        for (int i = 0; i < Dt1.Rows.Count; i++)
        {
            DataRow r = dt.NewRow();
            r["BillNumber"] = Dt1.Rows[i][0];
            r["CustomerName"] = Dt1.Rows[i][1];
            r["City"] = Dt1.Rows[i][2];
            r["Mobile"] = Dt1.Rows[i][3];
            r["TotalAmount"] = Dt1.Rows[i][4];
            r["Packing"] = Dt1.Rows[i][5];
            r["Tax"] = Dt1.Rows[i][6];
            r["Transport"] = Dt1.Rows[i][7];
            r["Additional"] = Dt1.Rows[i][8];
            r["PaybleAmount"] = Dt1.Rows[i][9];
            r["Session"] = Dt1.Rows[i][10];
            r["Date1"] = Dt1.Rows[i][11];
            r["Naration"] = Dt1.Rows[i][12];
            r["AmountWord"] = Dt1.Rows[i][13];
            r["Status"] = Dt1.Rows[i][14];
            r["Balance"] = Dt1.Rows[i][15];
            dt.Rows.Add(r);
        }
        string qry1 = "Select * from BillDetails where [BillNumber]='" + txtbill.Text + "'";
        OleDbDataAdapter da1 = bm.returnDataAdaptor(qry1);
        DataSet ds2 = new DataSet();
        da.Fill(ds2);
        da.Fill(ds);
        DataTable Dt2 = ds2.Tables[0];
        DataTable dt2 = ds.Tables.Add("Bill");
        dt2.Columns.Add("BillNumber", Type.GetType("System.String"));
        dt2.Columns.Add("ProductCode", Type.GetType("System.String"));
        dt2.Columns.Add("ProductName", Type.GetType("System.String"));
        dt2.Columns.Add("productSize", Type.GetType("System.String"));
        dt2.Columns.Add("ProductQuantity", Type.GetType("System.String"));
        dt2.Columns.Add("ProductWeight", Type.GetType("System.String"));
        dt2.Columns.Add("Unit", Type.GetType("System.String"));
        dt2.Columns.Add("ProductPrice", Type.GetType("System.String"));
        dt2.Columns.Add("Amount", Type.GetType("System.String"));
        dt2.Columns.Add("Date1", Type.GetType("System.DateTime"));
        for (int i = 0; i < Dt2.Rows.Count; i++)
        {
            DataRow r = dt.NewRow();
            r["BillNumber"] = Dt2.Rows[i][0];
            r["ProductCode"] = Dt2.Rows[i][1];
            r["ProductName"] = Dt2.Rows[i][2];
            r["productSize"] = Dt2.Rows[i][3];
            r["ProductQuantity"] = Dt2.Rows[i][4];
            r["ProductWeight"] = Dt2.Rows[i][5];
            r["Unit"] = Dt2.Rows[i][6];
            r["ProductPrice"] = Dt2.Rows[i][7];
            r["Amount"] = Dt2.Rows[i][8];
            r["Date1"] = Dt2.Rows[i][9];
            dt2.Rows.Add(r);
        }

但在r["ProductCode"] = Dt2.Rows[i][1];,它显示出一个例外。那是Column 'ProductCode' does not belong to table BillInfo.请解决我的错误。

在单个数据集中填充两个数据表

替换

DataRow r = dt.NewRow();

DataRow r = dt2.NewRow();

您只是使用了没有列ProductCode的错误表。它必须是"Bill"而不是"BillInfo"。

除此之外:

当您使用文本框作为 sql 查询的输入时,您将对 sql 注入持开放态度。请改用参数。

http://msdn.microsoft.com/en-us/library/system.data.oledb.oledbparameter.aspx

答案非常清楚Column 'ProductCode' does not belong to table BillInfo相反,我可以看到"产品代码"列在BillDetails中。