首页 > 代码库 > 温故而后知新——对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中常用对象的一些解释