【问题标题】:Fill two DataTable in single DataSet在单个 DataSet 中填充两个 DataTable
【发布时间】:2013-01-15 10:42:58
【问题描述】:

我有一个 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.请解决我的错误。

【问题讨论】:

  • 列“ProductCode”不属于表 BillInfo。
  • @Rajneesh 我有问题提到。
  • 当您使用文本框作为 sql 查询的输入时,您可以进行 sql 注入。请改用参数。
  • 好的 @TimSchmelter 我肯定会使用参数化查询。
  • @Ankur bm.returnDataAdaptor(qry); 在这一行指的是 bm

标签: c# .net c#-4.0 datatable dataset


【解决方案1】:

替换

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

【讨论】:

    【解决方案2】:

    答案很清楚Column 'ProductCode' does not belong to table BillInfo 而我可以看到列“ProductCode”在BillDetails

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-02-05
      • 2010-09-05
      • 2012-07-24
      • 2014-04-09
      • 2011-05-08
      • 2018-11-15
      • 2018-10-18
      • 2011-03-25
      相关资源
      最近更新 更多