不对,建立Relation可以让你在父子表中很简单的导向。
比如,作者表和书表。
一各作者有N本书。
当你定位了某一各作者表中的一各记录(DataRow),那么你可以通过这个Relation,很容易的导航至书名表,并得到和这个作者相关的书籍纪录(DataRow[]),反之亦然。这样就简化了查询工作。
特别是,当你使用控件对象绑定至数据集的这种技术来编程的时候,这种效果更加明显。比如,当你分别用两个DataGrid来显示这两个表的时候,这种关系使你几乎不需要编写任何代码,实现作者与相关书籍的自动的归类显示。

解决方案 »

  1.   

    有什么不能用SQL查询结合后台数据库实现的功能么
      

  2.   

    啊?不会吧?可能是我表达得不好。
    我问一下,如果有一组这样的控件comboBoxAuthors,和dataGridBooks。
    你需要实现,当你每一次改动comboBoxAuthors的值时,就要使dataGridBooks显示对应于当前comboBoxAuthors的书籍。
    通常你怎么做?
      

  3.   

    ADO.NET采用的都是无状态联接,即从数据库取得数据之后,将数据放在客户端或中间层的DATASET中,就和数据库的联接断开了。dataset即成了数据缓存,并具备很多数据库的功能,比如primary key, foreign key and relationship。看一本专门介绍ado.net的书就明白了。我觉得.NET中最有看头的部分就是ADO.NET
      

  4.   

    看看101个vb.net的例子,很有帮助。下面时下载联接。http://download.microsoft.com/download/e/d/2/ed214d90-68c3-400f-8ae4-b616845af10b/101vbnetsamples.exe
      

  5.   

    问题在于搂主好像感受不到这种DataSet得好处。
      

  6.   

    我是感受不到用relation的好处,用sql不是一样么
      

  7.   

    俺也感觉作用不大现在的体会是:Relation似乎在dataset包含多个表并绑定在同一datagrid是有些用估计还会起些约束吧还请高手指教
      

  8.   

    To sqlchen(哈欠):我很想知道你所说的dataset中的多个DataTable绑定到同一个Datagrid是怎么实现的,诚心发问。
      

  9.   

    string SQL = "SELECT * FROM Employees ;"+
                 "SELECT * FROM Orders";

    SqlDataAdapter da = new SqlDataAdapter(SQL,thisConnection);da.Fill(dataSet1);DataRelation myRel = new DataRelation("Employees和Orders的某些联系",
                                      dataSet1.Tables[0].Columns["EmployeeId"],
                                      dataSet1.Tables[1].Columns["EmployeeId"]);
    dataSet1.Relations.Add(myRel);
    dataGrid1.SetDataBinding(dataSet1,"Table");
    如上使用,这种关系看上去很爽!直接点连接就可以了。