最近开始学习c#,用到了SqlDataAdapter,书上说这个控件是一个表对应一个,但这样的话我怎么样才能实现跨表查询?请指教!顺便问一下,我做了自定义控件,但生成了dll,无法在别的项目中看到其画面,但能通过代码引用到,我想问,这能不能像vb一样做成类似ocx的东西在设计的时候能看到其设计界面?

解决方案 »

  1.   

    实现跨表查询不在于SqlDataAdpater,而在于你的查询语句或者存储过程。你也可以做成一个View,让SqlDataAdpater取出这个View.你自定义的是控件,还是组件?如果要支持设计时的可视化,你需要实现相应的显示方法。如果是Web控件,你需要实现Render,如果是WinForm控件,你需要实现Paint.
      

  2.   

    SqlDataAdpater不仅限于单表查询的。比如假设如下存储过程:sp_GetOrders:
       select * from OrdersMaster where OrderID = @orderID; select * from OrdersDetail where OrderID = @orderID;然后你可以用DataAdpater对象Fill得DataSet,但要注意,这时候第一个表的TableName是OrdersMaster,这是正确的;但从表的TableName为Tabel1...这是比较弱智的地方。另外,到了.NET FW 2.0,会多了一个新的对象,叫TableAdapter,这才是名正言顺对应单表操作的。
      

  3.   

    SqlDataAdapter可以多表查询,第二个需求可以做成简单的用户控件。
      

  4.   

    1.用DataView查询2.用SqlDataAdapter查询出你要的表,加入DataSet..可以加入多个表..然后你对DataSet进行操作.3.将你的多表查询SQL语句赋予SqlDataAdapter就好了..得到的结果就是多表查询后的结果.
      

  5.   

    SqlDataAdpater不仅限于单表查询,关键再于你的SQL语句,
      

  6.   

    主要看你的sql语句,你可以inner join很多表。SqlDataAdapter是你查询出来的结果集作为一张表。
      

  7.   

    主要在于楼主的SQL语句,SqlDataAdapter只是把结果封装起来,显示给你看
      

  8.   

    SqlAdapter主要是看你的SQL语句,你的SQL可以inner join到很多表啊。