ZZ2
小胜凭智 大胜靠德

以下两种方案假定你使用的是SqlServer数据库,
采用了SqlClient命名空间,如果采用你采用OleDb或者Odbc命名空间,代码稍做修改就同样适用.
不过OracleClient命名空间因为没有环境就没有测试,估计第二种方案会麻烦一些,可以参考MS的kb.

1.在DataAdapter的SelectCommand的CommandText中直接采用批查询
例如:
 strSql = "SELECT * FROM Orders;SELECT * FROM Customers";
 SqlDataAdapter daData = new SqlDataAdapter(strSql,new SqlConnection("server=XLZHU;User ID=sa;Password=111111;database=Northwind"));
 //daData.TableMappings.Add("Table","Order_Info");
 //daData.TableMappings.Add("Table1","Customer_Info");
 DataSet dsData = new DataSet();
 daData.Fill(dsData); 
这样,dsData中就会有两个DataTable,分别为Table和Table1(去掉注释名称就为Order_Info和Customer_Info).

2.使用存储过程
例如:
   先写一个名为GetCustomers的存储过程,用来取得第二个数据表(使用上面的第二条语句"CREATE PROCEDURE GetCustomers  AS SELECT * FROM Customers");
   再写一个名为GetData的存储过程,在取得第一个数据表所需的数据后(第一条语句),继续Exec GetCustomers;
   例如:
     "CREATE PROCEDURE GetData  AS
  SELECT * FROM Orders
  EXEC GetCustomers" 
   代码可以这样写:
   SqlDataAdapter daData = new SqlDataAdapter();
   //daData.TableMappings.Add("Table","Order_Info");
   //daData.TableMappings.Add("Table1","Customer_Info");
   daData.SelectCommand = new SqlCommand();
   daData.SelectCommand.Connection = new SqlConnection("server=XLZHU;User ID=sa;Password=111111;database=Northwind");
   daData.SelectCommand.CommandType = CommandType.StoredProcedure;
   daData.SelectCommand.CommandText = "GetData";
   DataSet dsData = new DataSet();
   daData.Fill(dsData);
同样,我们也得到了两个DataTable, 分别为Table和Table1(去掉注释名称就为Order_Info和Customer_Info).

posted on 2005-07-31 13:12  Judy  阅读(483)  评论(0编辑  收藏  举报