ADO.NET是一组面向.NET程序员公开数据访问服务的类。
其中,ADO.NET类分为以下几种对象模型:
1.数据连接对象:Connection;
2.数据命令对象:Command;
3.数据读取器对象:DataReader;
4.数据适配器对象:DataAdapter;
5.数据集:DataSet。
1.连接数据库:Connection对象
功能:建立与物理数据库的连接,要连接SQL Server的数据库必须使用System.Data.SqlClient命名空间。(是不是对这个命名空间很熟悉)
操作:连接数据库后,调用SqlConnection对象的Open方法打开数据库
//声明一个字符串存储连接数据库的字符串
string ConStr = "server=.;database=db_CSharp;uid=sa;pwd="
//创建一个SqlConnection对象
SqlConnection conn = new SqlConnection(ConStr);
//打开连接
conn.Open();
操作完毕后,需要关闭连接以释放资源。调用SqlConnection对象的Close方法或是Dispose方法。
(Close方法只是关闭连接,关闭后还可以勇Open方法打开;Dispose方法不止关闭连接还清理内存资源,不能再用Open方法打开)
2.执行SQL语句:Command对象
功能:向数据库发送增删改查。
操作1:设置数据源类型
Command有三个属性:Connection属性、CommandText属性和CommandType属性。Connection属性用于设置SqlCommand要使用的SqlConnection对象;CommandText属性用于设置对数据源执行的SQL语句或是存储过程,CommandType属性用于设置指定的CommandText类型。
CommandType的三个枚举成员:
1.StoredProcedure:存储过程;
2.TableDirect:表名;
3.Text:SQL语句。
操作2:执行SQL语句:
三种方法:
1.ExecuteNonQuery方法:执行SQL语句,并且返回受影响的行数;
//接上个代码的Str,连接数据库
SqlConnection conn = new SqlConnection(ConStr);
//打开连接
conn.Open();
//实例化cmd对象
SqlCommand cmd = new SqlCommand();
//指定其使用的conn连接数据库
cmd.Connection = conn;
//设置执行的SQL语句
cmd.CommandText = "delete from Student where name = 'abc'";
//只能执行SQL语句的文本形式
cmd.CommandType = CommandType.Text;
//使用ExecuteNonQuery方法执行SQL语句
int i = Convert.ToInt32(cmd.ExecuteNonQuery());
label1.Text = "有" + i.ToString() + "行数据受影响";
2.ExecuteReader方法:执行SQL语句,生成一个包含数据的SqlDataReader对象的实例;
3.ExecuteScalar方法:执行SQL语句,返回结果集中第一行的第一列。
3.读取数据:DataReader对象
功能:数据读取对象,提供只读向前的游标。也就是说当你只需要读取数据的时候,可以使用DataReader对象。
操作1:读取数据:ExecuteReader方法
SqlConnection conn = new SqlConnection("server=RBY;database=GRAS;uid=sa;pwd=123456");
conn.Open();
SqlCommand cmd = new SqlCommand();
cmd.Connection = conn;
cmd.CommandText = "select * from Card";
cmd.CommandType = CommandType.Text;
SqlDataReader sdr = cmd.ExecuteReader();
sdr.Close();
操作2:判断查询结果是否有值:HasRows属性
4.数据适配器:DataAdapter对象
功能:DataAdapter对象是DataSet与数据源的桥梁,既可以将从数据源中查询的数据放入到DataSet中,又可以把用户对DataSet的修改传给数据源。
操作:DataAdapter对象提供了4个属性,用于向数据库发送查询语句:SelectCommand、DeleteCommand、InsertCommand和UpdateCommand。
//创建适配器对象
SqlDataAdapter sda = new SqlDataAdapter();
//SelectCommand属性为cmd
sda.SelectCommand = cmd;
通过Fill方法填充DataSet数据集,常用通过Update方法更新数据源
5.数据集:DataSet对象
功能:DataSet对象就像存放于内存中的一个小型数据库,包含数据表(DataTable)、行(DataRows)、列(DataColumn),视图约束等关系,为了从数据库中获取数据,需要通过DataAdapter对象从数据库中查询数据。
操作1:可以使用Merge方法将DataSet、DataTable或DataRow数组的内容合并到现有的DataSet中;
操作2:可以使用Copy方法创建DataSet的副本。
总结:用书中的比喻完成最后的总结:
从数据库中获取数据是一个抽水的过程--
数据库就好比水源,里面存储着大量的数据;
Connection对象是伸入水中的进水龙头,保持和水的接触,只有保持连接才能使其他对象抽到水;
Command对象是抽水机,为抽水的活动提供动力,把水返回给上面的输水管;也可以把输上去的水输回去;
DataAdapter对象和DataReader对象负责把抽上来的水送上去,不过适配器对象是一个双向水管,不但可以向上送水,还可以往水源里放水(对数据库做修改),并且适配器对象还和一个水库相连;而DataReader对象只是一个单向水龙头,只能从发动机里取出的水继续往上送,而且也不和水库相连,直接送到需要水的地方,因此速度要快一些;
DataSet对象是一个大水库,把抽上来的水按一定关系放到池子里。