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