码迷,mamicode.com
首页 > 数据库 > 详细

访问数据库需要注意的问题 c#

时间:2018-09-12 20:25:11      阅读:219      评论:0      收藏:0      [点我收藏+]

标签:message   gre   过程   占用   建立   http   active   大连   cut   

在操作数据库的过程中,必然要产生数据库连接,这就要求在使用的时候要及时关闭连接。以避免数据库会话过多的问题。

Oracle数据库为例:

Oracle数据库查看会话,进程的语句

--查询数据库当前进程的连接数

select count(*) from v$process;

--查看数据库当前会话的连接数

select count(*) from v$session;

--查看数据库的并发连接数

select count(*) from v$session where status=‘ACTIVE‘;

--查看当前数据库建立的会话情况

select sid,serial#,username,program,machine,status from v$session;

--查询数据库允许的最大连接数

select * from v$parameter where name = ‘processes‘;

关于连接关闭的问题

执行一个查询,但是不关闭

private void Query()

{

OracleConnection conn = null;

try

{

conn = OpenConn();

var cmd = conn.CreateCommand();

cmd.CommandText = "SELECT * FROM HY_USERS where USER_NO = ‘072779‘";

cmd.CommandType = CommandType.Text;

var reader = cmd.ExecuteReader();

while (reader.Read())

{

AddInfo(string.Format("USER_NO:{0},USER_NAME:{1}", reader["USER_NO"], reader["USER_NAME"]));

}

}

catch (Exception ex)

{

Console.WriteLine(ex.Message);

}

finally

{

//CloseConn(conn);

}

}

我们看到产生一个会话

技术分享图片

执行多次就会参数多个会话:

技术分享图片

我们都知道数据库会话数有大小限制,在会话过多会导致数据库无法连接,所以在操作完毕数据库一定要关闭连接。

我们看看关闭连接后的代码执行的效果

private void QueryClose()

{

OracleConnection conn = null;

try

{

conn = OpenConn();

var cmd = conn.CreateCommand();

cmd.CommandText = "SELECT * FROM HY_USERS where USER_NO = ‘072779‘";

cmd.CommandType = CommandType.Text;

var reader = cmd.ExecuteReader();

while (reader.Read())

{

AddInfo(string.Format("USER_NO:{0},USER_NAME:{1}", reader["USER_NO"], reader["USER_NAME"]));

}

}

catch (Exception ex)

{

Console.WriteLine(ex.Message);

}

finally

{

CloseConn(conn);

}

}

技术分享图片

不管执行多少次,都不会有过多的会话

技术分享图片

关于DataReader和DataSet的一些问题

在DataReader的读取过程中,会一直占用OracleConnection连接对象,不能将数据库连接关闭。这个一个需要注意的问题,所以当项目中大量使用DataReader来读取数据,如果作为团队开发,或者有新成员参与进来,没有注意到数据库连接关闭,那么可能出现占用会话的问题,最终甚至导致数据库崩溃;所以在使用DataReader需要慎重。

不过DataReader的读取效率要高,占用内存必DataSet要少。

访问数据库需要注意的问题 c#

标签:message   gre   过程   占用   建立   http   active   大连   cut   

原文地址:https://www.cnblogs.com/moncci/p/9636156.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!