Smart Client 程序中如何实现数据访问
2004-11-25 09:50
471 查看
一 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; //数据绑定
..............................
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; //数据绑定
..............................
相关文章推荐
- Eratosthenes筛法求素数
- 代理服务器
- 不错的城市
- 今天用了一下MS REPORT SERVICE,真不错
- 每个初学者都应该搞懂的问题
- 有滚动条、固定Header的ASP.Net DataGrid实现
- boost 最新版下载(1.32.0)(加入对象XML序列化特性)
- .NET中的设计模式三:组合模式 选择自 lane_cn 的 Blog
- ASP.Net 1.x 中 __doPostBack实现的问题
- 有趣的定律3. 木桶定律
- .NET中的设计模式四:命令模式 选择自 lane_cn 的 Blog
- 思归的“动态控件的状态问题”的分析
- .NET中的设计模式五:观察者模式 选择自 lane_cn 的 Blog
- [转]配置Oracle,使它支持MTS下分布事务
- 五言.致知
- 在Remoting Server上取得Remoting Client的IP地址
- 各地的ADSL MODEM VPI、VCI 和DNS的信息
- Windows多线程多任务设计初步
- html及javascript技巧备份
- Windows平台下的多线程编程