黑马程序员_Ado.net学习总结

来源:互联网 发布:网络通俗歌手大赛孟丹 编辑:程序博客网 时间:2024/05/22 15:12

---------------------- Windows Phone 7手机开发.Net培训、期待与您交流! ----------------------

在编程的过程序中程序要如何和数据库打交道,这里就引发出了ado.net,简单的说,ado.net就是一组访问数据源的对象类库。通过这些类,我们就可以向数据库发送相关的命令, 用来操作数据库,下面我简单总结一些最常用的类:

Connection

Connection对象可以看作为程序与数据库之间的桥梁。没有利用连接对象将数据库打开,是无法从数据库中取得数据的。

Connection常用属性和方法:

属性:connectionString用于连接数据库的连接字符串

方法:open()设置打开数据库连接;close()与闭与数据库的连接

使用步聚:

1、定义数据库连接字符串,以sql server数据库为例(Data Source = 服务器名;Initial Catalog = 数据库名;User ID = 用户名;Pwd = 密码)

2、创建connection对象,这里需要注意的是,不同的数据库需要不同的连接类,如sql server使用sqlconnection con=new sqlconnection(“连接字符串”),access数据库使用oledbconnectioncon=new oledbconnection(“连接字符串”);

上边的写法可能会有些麻烦,因为以后可能会再换成别的数据库,这里也用刚学过的多态知识,使用IDbConnection con=newsqlconnection(“连接字符串”),为什么可以这样,我在转到定义中看到sqlconnection,与oledbconnection都继承抽象类dbconnection,而dbconnection实现了接口IDbConnection,所以可以使用IDbConnection来实例化不同的数据连接类。

3、打开数据库连接,可以使用con.open()方法

Command

      数据库连接成功后,这里就可以使用command来向数据库下达命令,如增、删、改、查,或者是调用存储过程等。

      Command常用属性和方法:

      Connection:command对象所使用的数据库连接

      commandText:执行的sql语句或存储过程

      CommandType:命令文本的类型,它接收的是一个CommandType枚举类型,CommandType.StoredProcedure,指定的是存储过程,CommandType.Text,指定的是命令文本,就是普通的sql语句

      ExecuteNonQuery():该方法是执行命令如,delete、update,返回值是,执行该命令的受影响行数

      ExecuteReader():执行查询命令,返回DataReader对象

      ExecuteScalar():返回单个值如sum(…)

      Parameters.AddRange():将SqlParameter(以sqlserver为例)类型数组中的元素,遍历添加到参数集合中。

      Parameter参数,在调用存储过程时需要传递参数,这时就要使用parameter来提供参数,同时防止sql注入式攻击,例sqlparameter param1=newsqlparameter(“@name”,”张三”);

      使用步骤:

1、创建数据库连接 。。。。

2、创建command对象

与IConnection一样,command对象也可以使用IDbCommand,例IDbCommand cmd=new sqlcommand(“定义sql语句或存储过程”,con);

如果使用存储过程则需要指定它的commandType属性为CommandType.StoredProcedure

3、执行命令

使用command对象的某个方法执行命令

DataReader

      当使用command对象中的ExecuteReader()执行查询命令时,它返回一个DataReader对象,通过这个对象,我们就可以往数据库中读取数据了。使用这个对象可以从数据库中检索到只读数据,它每次从结果中读取一行数据到内存中。所以使用datareader查询数据操作非常快,但同时它也一直占着connection。

      DataReader常用的方法:

      Read():前进到下一行记录,如果读取记录返回true,否则返回false

      Close():关闭datareader对象

      使用步骤:

1、创建数据库连接 。。。

2、创建command对象。。。

3、调用command对象的ExecuteReader(),返回一个datareader对象

使用ExecuteReader()方法前,要先打开数据库

4、使用datareader对象的read()方法,逐行读取数据

Dr.read();

5、读取当前行的列值

这里可以像索引器那样(转到定义发现),用[]读取某列的值,如dr[0]或dr[“name”],因为取出的值是object所以需要做相应的数据类型转换。

6、关闭DataReader对象

DataReader对象它是一直占用数据库连接的,所以在使用完时,一定要关闭close()

DataSet

DataSet对象可以把它看作为一个临时缓存在内存中的小型数据库,可以把从数据库中所查询到的数据保留起来,它可以包含多个表(DataTable),每个数据表中又有列(DataColumn)和行(DataRow)。

刚才总结使用DataReader每次只读取一行数据到内存中,如果我们要查看1000条数据,在要循环从数据库中读1000次,并且在这个过程中要一直和数据库保持连接,而DataSet则是临时保存在内存中的,所以在断开数据库连接的情况下可以操作数据。当程序需要数据时,就直接在内存的数据集中读取,同时也可以对它的数据进行修改,然后将修改后的数据提交给数据库。

甚至可以将整个数据库显示出来,DataSet是放在内存中的。DataSet 的能力不只是可以储存多个Table 而已,还可以透过DataAdapter对象取得一些例如主键等的数据表结构,并可以记录数据表间的关联。

DataSet本身不具备和数据源沟通的能力,而是通过DataAdapter对象来与数据源进行传输的。

DataAdapter

即然DataSet本身不具备和数据源沟通的能力,那么怎么样才能把数据源的数据放在DataSet中呢,这就需要用到DataAdapter(数据适配器)对象了。

在老师的视频中这样描述数据库、数据集、数据库连接,数据库就相当于仓库,数据集就相当于临时存储库,数据库连接就相当于数据库到数据集之间的一条路,数据适配器就相当于运送数据的卡车。

DataAdapter常用属性和方法:

SelectCommand:从数据库检索数据的Command对象

Fill (): 向DataSet中的表填充数据

Update():将DataSet中的数据提交到数据库

如何填充数据集:

1、创建数据库连接 。。。

2、创建command对象。。。

3、利用上面的command对象,创建DataAdapter对象

IDataAdapter da=newSqlDataAdapter(command对象);

4、调用DataAdapter对象的Fill()方法填充数据集

da.fill(数据集对象,”数据表名”);

如果数据集中没有该表,则会创建一个新表,如果有的话,将会继续将数据填充到数据集中的该表中。

如何将数据集中数据更新回数据库:

1、使用SqlCommandBuilder对象生成更新用的相关命令。

SqlCommandBuilderbuilder = new SqlCommandBuilder(da);

2、调用da对象的Update()方法

da.Update(数据集对象,"数据集表名");


---------------------- Windows Phone 7手机开发.Net培训、期待与您交流! ----------------------

原创粉丝点击