小二哥's blog

----zhangzs8896(小二)

导航

Smart Client 程序中如何实现数据访问

Posted on 2004-11-25 09:50  小二哥  阅读(570)  评论(0编辑  收藏  举报

一 ado.net与ado
    ado :[面向连接的]  1 ole-db数据源提供程序。 2 所有的数据库使用同一个Connection类。
    ado.net :[ 面向无连接]  1 托管的.net数据源提供程序。 2 Connection类针对特定的数据库进行优化。

二 Connection类
   SqlDataAdapter MyAdapter= new SqlDataAdapter();
   SqlConnection myConnection = new SqlConnection("server=localhost;database=Northwind;integrated security=yes ");
   //myConnection.ConnectionTimeout=6000;  //设置连接时间,超过这个时间没连上则报超时
   string str="select categoryid,categoryname,[description] from Categories";  //sql 查询串
   MyAdapter.SelectCommand  = new SqlCommand(str, myConnection);
   MyAdapter.SelectCommand.CommandType = CommandType.Text;

   DataSet ds=new DataSet();
   myConnection.Open();
   MyAdapter.Fill(ds);
   dataGrid1.DataSource=ds.Tables[0];
   //dataGrid1.DataSource=ds;  //用这句代替上面一句看一下效果^_^
   myConnection.Close();
  注意:如果连接的是"存储过程" 修改以上红色部分为:
   MyAdapter.SelectCommand  = new SqlCommand("存储过程名", myConnection);
   MyAdapter.SelectCommand.CommandType = CommandType.StoredProcedure;

三 添加表之间的关系:
    在包含多个 DataTable 对象的 DataSet 中,可以使用 DataRelation 对象来使一个表与另一个表相关,在多个表之间导航,以及从相关表中返回子行或父行。默认情况下,向 DataSet 中添加 DataRelation 会将一个 UniqueConstraint 添加到父表中并将一个 ForeignKeyConstraint 添加到子表中。
以下代码示例使用 DataSet 中的两个 DataTable 对象来创建一个 DataRelation。每个 DataTable 包含一个名为 customerid 的列,它用作两个 DataTable 对象之间的链接。该示例将单个 DataRelation 添加到 DataSet 的 Relations 集合中。该示例中的第一个参数指定所创建的 DataRelation 的名称。第二个参数设置父 DataColumn,第三个参数设置子 DataColumn。
[Visual Basic]
custDS.Relations.Add("CustOrders", _
                     custDS.Tables("Customers").Columns("customerid"), _
                     custDS.Tables("Orders").Columns("customerid"))
[C#]
custDS.Relations.Add("CustOrders",
                     custDS.Tables["Customers"].Columns["customerid"],
                     custDS.Tables["Orders"].Columns["customerid"]);
四 DataView
     DataView类似于Sql中的试图。
     .............................
     DataTable dt=ds.Tables["duty"];   //ds即为DataSet,dt为ds中的一个Datatable
     DataView dv=new DataView(dt);  
     dv.RowFilter="日期< '2004-11-25' ";  //类似与sql 中的where 子句
     //如果是变量的话可以是下面红色部分:
     // string dstr=System.DateTime.Now.ToString("yyyy/MM/dd");
    //  dv.RowFilter="日期< ' "+dstr+" ' ";

     dv.Sort="日期 desc";//类似于sql 中的order 子句
     My_Grid.DataSource=dv;   //数据绑定
    ..............................