黑马程序员_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培训、期待与您交流! ----------------------
- 黑马程序员_Ado.net学习总结
- 黑马程序员_ADO.NET学习知识总结
- 黑马程序员_ADO.NET学习
- 黑马程序员_ADO.NET
- 黑马程序员_ADO.NET学习笔记
- 黑马程序员_ADO.NET学习笔记
- 黑马程序员_ADO.NET数据库连接
- 黑马程序员_学习日记5_ADO.Net入门1
- 黑马程序员_学习日记6_ADO.Net入门2
- 黑马程序员_学习日记15_ADO.Net之DataSet
- 黑马程序员_ADO.Net 数据库访问技术
- 黑马程序员_ADO.NET连接数据库
- 黑马程序员_ADO.Net(ExecuteReader,Sql注入与参数添加,DataSet,总结DataSet与SqlDataReader )
- 黑马程序员_ADO.NET 一个简单的登录程序
- 黑马程序员_ADO.NET通过DataSet访问数据库
- 黑马程序员_ADO.NET通过DataReader快速访问数据库
- 黑马程序员_ADO.NET操作数据库的过程
- 黑马程序员_ado.net_连接sql server 总结
- input file 浏览器兼容问题
- 取得本机IP代码
- 《火星人开发纪实:敏捷开发一千零一夜》序言
- freebsd设置网关
- Ubuntu 第七天:gcc原来是这样的。。。。。
- 黑马程序员_Ado.net学习总结
- android 模拟软件启动界面
- VC读写ini文件的方法
- SqlServer 碎片与填充因子
- 经典SQL语句大全
- c#写的日历
- UiTableView 使用技巧1 (datamodel与datasource独立)
- PYTHON中try finally与try except不能同时使用吗?
- memcopy memset