ADO.NET分为两种连接模式:无连接模式和连接模式,它们之间的关系如下:
一、假如把数据库看作是一个大水池,那么connection就是伸进水中的进水龙头,起着关键的作用,只有它进行了连接,才能抽到水,也就是说才能从数据库中提取到数据。它是一个连接对象,它提供了四种访问数据库的对象,分别是:
1.SQL Server数据库提供程序,位于System.Data.SqlClient命名空间;
2.ODBC数据提供程序,位于System.Data.Odbc命名空间;
3.OLEDB数据提供程序,位于System.Data.OleDb命名空间;
4.Oracle数据提供程序,位于System.Data.OracleClient命名空间。
使用Connection时我们通常都必须调用Open对象来打开数据库。 使用完后,需要关闭数据库,这时我们可以用到Close()和Dispose()对象来关闭,这两者的不同点是:Close方法用于关闭一个连接,而Dispose方法不仅关闭一个连接,而且还清理 连接所占用的资源。当使用Close()关闭连接后,可以再调用Open方法打开连接,不会产生错误 ,而如果使用Dispose方法关闭连接,就不可以使用Open方法再次打开连接了,必须再次重新初始化连接再打开 。
二、Command对象则像是抽水机,为抽水提供动力和执行方法,通过“水龙头”,把水反给上面的水管。它是一个数据命令对象,主要功能是向数据库发送查询、更新、删除、修改操作的SQL语句。Command对象主要有这几种方式(sqlCommand 、OleDbCommand、OdbcCommand、OracleCommand);
Command对象有三个执行SQl的语句:
1.ExcuteNonQuery方法——执行无返回数据集的SQL语句,并返回受影响的行数,在使用SqlCommand向数据库发送增、删、改命令时,通常使用它来执行发送的SQL语句。
2.ExecuteReader方法——执行SQL语句,并生成一个包含数据的SqlDataReader对象的实例。它的返回值是一个SqlDataReader对象。
3.ExecuteScalar方法——执行SQL语句,返回结果集中的第一行的第一列。它的返回值通常是结果集中的第一行的第一列或者空值(如果结果集为空)。
三、DataAdapter和DataReader对象就像输水管,担任着水的传输任务。并起着桥梁的作用。DataAdapter对象像一根输水管,通过发动机,把水送到水库里保存。而DataReader对象也是一种水管,和DataAdapter对象不同的是,它不把水输送到水库里面,而是单向的直接把水送到需要水的用户那里,所以要比在水库中周转一下来的更快。
1.DataReader对象是数据读取器对象,提供只读几前的游标,如果应用程序需要每次从数据库中取出最新的数据,或者只是需要快速读取数据,并不需要修改数据,那么就可以使用DataReader对象进行读取。对于不同的连接,有不同的DataReader对象类型,暂不作介绍。
如果要读取数据表中的数据,通过ExecuteReader方法。对于每个关联的SqlConnection,一次只能打开一个SqlDataReader,在第一个关闭之前,打开别一个的任何尝试都将失败。
2.DataAdapter对象是一个数据适配器对象,是DataSet与数据源之间的桥梁,用于与数据源之间的互通。它提供了以下四个属性:
1>.SqlCommand属性:用于向数据库发送查询SQL语句;
2>.DeleteCommand属性:用于向数据库发送删除Sql语句;
3>.InsertCommand属性:用于向数据库发送查询Sql语句;
4>.UpdataCommand属性:向数据库发送更新语句;
DataAdapter中还有几个重要的方法:
1>.Fill方法用数据填充DataSet。
通过DataAdapter对象的Fill方法填充DataSet数据集。与Select命令关联的Connection对象必须有效,但不需要将其打开。DataSet对象就像存放于内存中的一个小型数据库。它可以包含数据表、数据列、数据行、视图、约束以及关系。
2>.Update方法更新数据库。(此时,DataAdapter将调用DeleteCommand、InsertCommand以及UpdateCommand属性);
使用DataAdapter对象的Updata方法,可以将DataSet中修改过的数据及时地更新到数据库中。
朋友告诉我,学习还写出来比较好,随时记录自己在学习过程中遇到的困难以及解决问题的方法,每个知识点都做个笔记。个人觉得比较可行,总比自己稀里糊涂地过一遍强好多,嘿嘿,所以就有了这个笔记,而且以后也会再写。。。由于本文内容均为自己手敲,并非复制粘贴,所以有写错误的地方,敬请谅解,且欢迎指出,谢谢哈,呵呵。。。