static void Main()
        {
            string strConn = "server = '(local)';database=Person;integrated security = true";
            string strSQL = "SELECT * FROM 客户表;" + "SELECT * FROM 订单表";  //两条查询语句
            SqlDataAdapter da = new SqlDataAdapter(strSQL, strConn);
            da.TableMappings.Add("订单表", "新订单表"); 
            da.TableMappings.Add("客户表", "新客户表");
            DataSet ds = new DataSet();
            Console.WriteLine(da.Fill(ds));
            Console.WriteLine(ds.Tables.Count);
            Console.ReadKey(); 
        }
有两张表,客户表6行,订单表7行,一起填充到DataSet 中,为什么最后输出的添加行数不是13行,而是6行?

解决方案 »

  1.   

    你输出的是DataSet中DataTable的个数,而不是所有表包含的行数你可以如下输出总行数int rows_count=ds.Tables.Cast<DataTable>().Sum(a=>a.Rows.Count);//得到总行数
      

  2.   

    难道后面一句输出影响了你们?我就知道,好吧,这样:
    static void Main()
      {
      string strConn = "server = '(local)';database=Person;integrated security = true";
      string strSQL = "SELECT * FROM 客户表;" + "SELECT * FROM 订单表"; //两条查询语句
      SqlDataAdapter da = new SqlDataAdapter(strSQL, strConn);
      da.TableMappings.Add("订单表", "新订单表");  
      da.TableMappings.Add("客户表", "新客户表");
      DataSet ds = new DataSet();
      Console.WriteLine(da.Fill(ds));
      Console.ReadKey();  
      }
    有两张表,客户表6行,订单表7行,一起填充到DataSet 中,为什么最后输出的添加行数不是13行,而是6行?
      

  3.   

    两条查询一起输出,DataSet 只能获取到第一条查询的数据吧
      

  4.   


    我试验了一下,呵呵,如果你把你两个SQL换个位置,返回的结果应该是7
    也就是说,他是按表返回的FILL结果,而且从右向左执行的
    机制应该是先FILL 你的 订单表返回7,然后FILL客户表返回6, 6把前一次的结果覆盖了
    所以显示的6。
    呵呵,猜想的。
      

  5.   

    LZ这个思路都是错的.....2个不同的表...不管它的列名相不相同,你怎么可能 在A表的后面加上B 表嘛......
    只有先select A B 2个表的后,在把B中的所有行加到A上去.....
    这个就得自己写代码咯
      

  6.   

    那你写一万个update tableName set columnName=1 where id=1 然后去执行数据库然后你用result接受executeQuery()你看下你接受的result是1 还是1万!!!!!这样的结果你都能想出!