首页 > 代码库 > 温故而后知新——对ado.net中常用对象的一些解释

温故而后知新——对ado.net中常用对象的一些解释

在使用ado.net连接数据库获取数据,一般的步骤是:

1、设置好web.config    //用来设置服务器数据库的地址以及登录名密码

2、创建Connection对象    //用来创建访问数据库的连接

3、创建Command对象    //用来发送命令(写sql语句)

4、用DataReader获取数据    //获取数据库数据

5、利用DataSet储存获取到的数据    //容器

6、关闭Connection对象和DataReader/DataAdapter的连接  //为了性能,不关闭可能会报错

 (其中3、4两步可以用DataAdapter对象一步代替)

一、设置web.config

打开web.config,直接在根节点加入:

<connectionStrings>
<add name="Try" connectionString="data source=数据库地址;initial catalog=数据库名称;persist security info=True;user id=登录名;password=密码;"/>
</connectionStrings>

变成

<configuration> //根节点  <system.web>    <compilation debug="true" targetFramework="4.5.1" />    <httpRuntime targetFramework="4.5.1" />  </system.web>  <connectionStrings>    <add name="Try" connectionString="data source=数据库地址;initial catalog=数据库名称;persist security info=True;user id=登录名;password=密码;"/>  </connectionStrings></configuration>

这样就添加了一个连接字符串,名字叫做Try

 

二、Connection对象

现在要通过刚刚添加的连接字符串连接数据库了,获取web.config中的连接字符串后新建Connection对象:

using System.Configuration;using System.Data.SqlClient;string connectionString = ConfigurationManager.ConnectionStrings["Try"].ConnectionString; //取名字为Try的连接字符串SqlConnection conn = new SqlConnection(connectionString); //用这个连接字符串新建Connection对象

 

 

三、Command对象

在使用Command对象之前,必须保证我们的Connection对象已经处于open状态:

conn.Open();

 

Commond对象的创建,无论用哪种形式,只要保证它与Connection对象的联系以及我们写的sql语句传进去了就行:

SqlCommand cmd = conn.CreateCommand(); //通过之前的Connection对象创建cmd.CommandText = "select top 10 * from Project";  //写sql语句//或者下面的直接构造函数的形式SqlCommand sc = new SqlCommand("select top 10 * from Project", conn);

 

它有三个常用方法

1.ExecuteNonQuery();  该方法适用于非查询语句,返回受影响的行数(int)

cmd.CommandText = "update Project set Name=‘tom‘ where id=3";int result = cmd.ExecuteNonQuery(); //返回1,即有一条数据被修改

 

2.ExecuteScalar(); 该方法返回查询结果的第一行第一列数据(object)

cmd.CommandText = "select count(*) from Project";int result = int.Parse( cmd.ExecuteScalar() ); //返回Project表的总行数,由于返回类型是object,因此需要转换成int

 

3.ExecuteReader();   该方法返回一个DataReader对象,用于获取查询的结果,后面详解

 

 

 

四、DataReader对象和DataAdapter对象

1.DataReader的用法

 DataReader可以通过Command的ExecuteReader()方法返回,它的核心方法是Read():

SqlDataReader dr = cmd.ExecuteReader();while (dr.Read())  //Read方法返回一个bool值,如果有值就返回true并前进到下一行,当整个表读取结束了就返回false {        Response.Write(dr.GetInt32(0));  //这里假设表的第一列是int型,GetInt32()方法需要传一个int参数,从0开始的列的索引值 }    

  这样把查询结果的第一列就读取出来的,它适合快速获取一些信息

  读取完之后记得关闭DataReader:

dr.Close();dr.Dispose();

 

 

 

2.DataAdapter的用法

 DataAdapter对象也称之为数据适配器对象,用来填充一个DataSet容器:

DataSet a=new DataSet("ds1");SqlDataAdapter ada = new SqlDataAdapter("select top 10 * from Project", conn);ada.Fill(a);

 

注:

在用完后记得要关闭Connection和DataReader/DataAdapter:

ada.Dispose();dr.Dispose();
conn.Close();conn.Dispose();

这其实很麻烦,用完了还得关闭,为了图简便,可以使用using语法。

其完整的读取数据并返回DataSet示例如下:

private DataSet GetDataSet(string sql){    string connectionString = ConfigurationManager.ConnectionStrings["Try"].ConnectionString; //取名字为Try的连接字符串    DataSet ds = new DataSet("ds1");    using (SqlConnection conn = new SqlConnection(connectionString))    {       using (SqlDataAdapter ada = new SqlDataAdapter(sql, conn))         {            ada.Fill(ds);         }    }    return ds;}

 

温故而后知新——对ado.net中常用对象的一些解释