ADO.NET
DataReader与Dataset有什么区别?
一个是只能向前的只读游标,一个是内存中虚拟的数据库。
ADO.NET中读写数据库需要使用哪些对象?作用是什么?
Connection连接对象,Command执行命令和存储过程,DataReader向前只读的数据流,DataAdapter适配器,支持增删查询,DataSet数据级对象,相当与内存里的一张或多张表。
什么是SQL注入,应该如何防止?
利用sql关键字对网站进行攻击,用参数化的SQL就可以避免SQL注入!
ExecuteScalar 和 ExecuteNonQuery 的区别?
ExecuteNonQuery:返回受影响的行数。
ExecuteScalar:返回结果集的第一行第一列,忽略其他行。
何时创建连接池?
当第一个连接请求到来时创建连接池;连接池的建立由数据库连接的连接字符创来决定。每一个连接池都与一个不同的连接字符串相关。当一个新的连接请求到来时如果连接字符串和连接池使用的字符串相同,就从连接池取出一个连接;如果不相同,就新建一个连接池。
何时关闭连接池?
当连接池中的所有连接都已经关闭时关闭连接池。
当连接池中的连接都已经用完,而有新的连接请求到来时会发生什么?
当连接池已经达到它的最大连接数目时,有新的连接请求到来时,新的连接请求将放置到连接队列中。当有连接释放给连接池时,连接池将新释放的连接分配给在队列中排队的连接请求。你可以调用close和dispose将连接归还给连接池。
如何允许连接池?
对于.NET应用程序而言,默认为允许连接池。(这意味着你可以不必为这件事情做任何的事情)当然,如果你可以在SQLConnection对象的连接字符串中加进Pooling=true;确保你的应用程序允许连接池的使用。
应该如何禁止连接池?
ADO.NET默认为允许数据库连接池,如果你希望禁止连接池,可以使用如下的方式:
- 使用SQLConnection对象时,往连接字符串加入如下内容:Pooling=False;
- 使用OLEDBConnection对象时,往连接字符串加入如下内容:OLE DB Services=-4;