.NET面试题——第13篇 数据访问部分

1. 连接数据库的字符串应该写在哪儿?

写在配置文件中。

2. 解释ADO.NET中的使用Connetion对象的Close()和Dispose()的区别。

Close()表示关闭连接,可以重新通过Open()打开;Dispose()表示销毁,销毁后的链接不能再打开,因为ConnectionString清空了,但此时Connection对象还在。

如果程序中没有向连接池发出请求说要Connection对象,Connection对象便会销毁,这也是连接池存在的意义。

3. DataReader和DataSet的异同

DataReader和DataSet最大的区别在于,DataReader使用时始终占用Connection对象,而且DataReader是只进的..你读了第一条后就不能再去读取第一条了..

DataSet则是将数据一次性加载在内存中.抛弃数据库连接,读取完毕即放弃数据库连接,比较消耗内存,但是却比DataReader要灵活,可以动态的添加行,列,数据.对数据库进行回传更新操作

4. 从数据库读取记录,你可能用到的方法有哪些

通常有两种方式 SqlDataReader(非断开式连接) 和SqlDataAdapter|DataSet(断开式连接)方式。

5. ADO.NET相对于ADO等主要有什么改进?

ADO.NET不依赖于ole db提供程序,而是使用.net托管提供的程序;

ADO.NET不使用com

ADO.NET不再支持动态游标和服务器端游

ADO.NET可以断开connection而保留当前数据集可用

ADO.NET强类型转换

ADO.NET xml支持异同

6. 概述O/R mapping (ORM)及其原理

ORM,Object-Relationl Mapping即为对象-关系映射。它的作用是在关系型数据库和对象之间作一个映射,这样,我们在具体的操作数据库的时候,就不需要再去和复杂的SQL语句打交道,只要像平时操作对象一样操作它就可以了。

原理主要是利用反射等技术手段,自动生成SQL,将业务对象持久化到关系数据库中。

7. ADO.NET中常用的对象有哪些?分别描述一下。

DataSet对象:数据集,表示内存中数据的缓存,可以把它想像成一个临时的数据库,它里可以存多个表(DataTable),而且是断开式的,不用每进行一次操作就对数据库进行更新,从而提高了效率。

DataReader对象:读取器,它与DataSet最大的不同是有连接式的,每次对数据库进行存取都会影响到数据库。

Connection对象:连接池,用于连接数据库的对象,表示到数据源的一个唯一的连接。

Command对象:命令对象,表示要对数据库执行的一个SQL语句或一个存储过程。

DataAdapter对象:适配器,该对象是与DataSet配合使用的对象,用于把表填充到DataSet,和更新DataSet等。

8. 对数据的并发采用什么办法进行处理较好。

可以控制连接池的连接数量,条件好的话可以用负载平衡

9. 编写数据库查询分页SQL。

假设每页显示X条,用pagesize表示;当前要显示第X页,用currentPage表示;

SQLServer**中:**select top pagesize * from tablename

where id not in (select top (currentPage-1)*pagesize id from tablename)

select top pagesize * from

(select ROW_NUMBER() over (order by id asc) as rownumber, * from (select * from tablename) as oo) as o

where rownumber>(currentPage-1)*pagesize

mysql**中:**select * from tablename limit (currentPage-1)*pagesize,pagesize

Oracle**中:**select * from (select rownum rn,t.* from tablename ) t

where t.rn>(currentPage-1)pagesezie and t.rn<=currentPagepagesezie

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不想只会CRUD的猿某人

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值