黑马程序员_ADO.NET通过DataSet访问数据库

                                ------- ASP.Net+Unity开发.Net培训、期待与您交流! -------

C#程序主要包括三种:windows窗体应用程序、web窗体应用程序和web服务。无论哪种应用程序,几乎都要和数库进行交互,和数据库进行连接,对数据库中的数据进行增删查改和其他操作。要想操作数据库就离不开ADO.NET,ADO.NET封装了访问和操作数据库所需要的各种类。ADO.NET访问数据库有两种模式,一种是连接模式,ADO.NET连接数据库,对数据库进行操作,返回值交给DataReader,这种操作速度较快。另一种是非连接模式,ADO.NET连接数据库,将数据库的表返回保存在客户端的DataSet数据集中,对DataSet数据集进行操作,完成后再把DataSet数据集中的数据更新到数据库中。

ADO.NET操作数据库的主要步骤:和数据库建立连接、配置SqlCommand操作命令类、配置SqlDataAdapter适配器类、返回数据填充DataSet数据集、对数据进行操作(这时操作的是DataSet中的数据),将DataSet中的数据更新到数据库。下面一步步实现对数据库的操作。

1、 和数据库建立连接。

a、连接字符串,string str=”Data Source=服务器ip地址;Database=数据库名;User Id=登录名;Password=密码”;

b、用SqlConnection类建立连接,建立连接前,首先说明下Sql Server对数据库连接的管理机制。Sql Server数据库给访问提供连接的机制,叫连接池机制,即Sql Server服务器中池子中的连接是准备好的,但也是有限的,用完了就没了,所以代码访问数据库的连接,不用的话就马上释放,避免连接池的连接用完了,产生连接池溢出!有两种安全释放数据库连接的方法:

(1)using(SqlConnection conn=newSqlConnection(str))

{

 conn.Open();

SqlCommand comm=new SqlCommand();

 .......

 

}

using方法用来释放实现了IDisposible接口的对象,可以隐式调用Dispose()方法,自动关闭并回收资源,大括号中使用,括号结束后释放(即使中间有错误,using也会调用dispose()方法释放连接),对比这种写法:

SqlConnection conn=new SqlConnection(str); 

 conn.Open();

 SqlCommand comm=new SqlCommand();

 .......

 conn.Close();

如果conn.Close()前面出现错误,就不会执行conn.Close(),造成连接不释放。

(2)

try

{

SqlConnection conn=new SqlConnection(str);

 conn.Open();

 SqlCommand comm=new SqlCommand();

 .......

}

catch

{

}

finally

{

 conn.Close();//不管try中的代码执行情况怎么样,finally中的语句都会执

               //行,释放连接

}

2、 配置SqlCommand操作命令类。

SqlCommand类也实现了IDisposible接口,也需要释放。

Using(SqlCommand comm=conn.CreateCommand())

{

comm.CommandText=”Sql查询语句”;

}

3、 配置SqlDataAdapter数据适配器。

SqlDataAdapter adapter=new SqlDataAdapter(comm);

DataSet ds=new DataSet();

4、 填充DataSet数据集。

Adapter.Fill(ds);

这时,我们就获得了数据库中符合查询条件的数据,保存在DataSet中。DataSet保存在客户端内存中,不占用服务器资源。

5、 对DataSet中的数据进行操作。

以遍历表中的数据为例:

DataTable dt=ds.Tables[0];

for(int i=0;i<dt.Rows.Count;i++)

{

 DataRow row=dt.Rows[i];

 MessageBox.Show(row[“列名1”]+”,”+row[“列名2”]+”,”+…..);

}

6、 如果对DataSet数据集中的数据有更改的话,需要把更新同步到数据库中。用SqlDataAdapter类的Update()方法进行更新:

DataSet dschange=ds.GetChanges();

if(dschange!=null)

{

adapter.Update(dschange);//将更新同步到数据库

ds.AcceptChanges();//修改DataSet的状态,使所有更改变为未更改

}

                           -------  ASP.Net+Unity开发 .Net培训 、期待与您交流! -------
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值