------- 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培训 、期待与您交流! -------