今天oracle会话突然到100多了。然后老大测试,在网站上面每点击一下带有查询数据库的链接,会话就会多一个,我想也是,如果每个客户端的每个点击都会增加一个会话的那么数据库是不是吃不消呢?(网上看到oracle会话最多可以容纳几百个吧)我的数据库操作都是基于SQLHelper.cs类的。请问该如何确保oracle会话在一个适当的范围内?
问题描述与http://topic.csdn.net/u/20070904/18/c97723a8-4b4a-4a88-920b-6376dc8abc92.html极其相似
问题描述与http://topic.csdn.net/u/20070904/18/c97723a8-4b4a-4a88-920b-6376dc8abc92.html极其相似
解决方案 »
- 读取SQL后台图片(Text型)问题
- 考勤报表用什么报表工具做比较好。
- 请问一个datalist的datakey问题
- 关于Cookie的问题,整和系统所用(System.Net.Cookie和HttpCookie)
- 做购物车 项目经理说用到session 和cookie 请大虾们讲讲这两个分别是用来保存什么 怎么判断客户端支持cookie 知道马上揭贴
- 大家帮忙一下:如何模仿ie“另存为”功能 做一个下载按钮?
- 如何防止客户端软件多线程下载文件?
- c++写的dll在asp页面里面可以调用。那把asp页面升级到aspx,请问可以同样调用这个dll吗(弄好了,送个500。。。谢谢你的回复)
- 这个dll文件怎么无法使用呀!!!
- 初学者之路,高手帮忙!
- asp.net asp:panel 如何自动显示滚动条
- PostBackUrl 回传新建小窗口问题
正式你这样的。给你看看sqlhelper类的代码。
using System;
using System.Data.OracleClient;
using System.Data;
using System.Configuration;namespace DBUtility
{
public class SQLHelper
{
//获取数据库连接字符串
public static string GetConnectionString()
{
string cfgManage = ConfigurationManager.ConnectionStrings["conString"].ConnectionString;
return cfgManage;
}
/// <summary>
/// 执行简单的SQL语句
/// </summary>
/// <param name="connectionString">连接字符串</param>
/// <param name="cmdType">command类型</param>
/// <param name="cmdText">command命名的名字或者SQl语句</param>
/// <param name="oracleParames">command命令参数</param>
/// <returns></returns>
public static int ExecuteNonQuery(string connectionString, CommandType cmdType, string cmdText, params OracleParameter[] oracleParames)
{
OracleCommand cmd = new OracleCommand();
using (OracleConnection conn = new OracleConnection(connectionString))
{
try
{
PrepareCommand(cmd, conn, cmdType, cmdText, oracleParames);
int result = cmd.ExecuteNonQuery();
cmd.Parameters.Clear();
return result;
}
finally
{
conn.Close();
}
}
}
/// <summary>
/// 执行SQL语句,返回DataReader对象
/// </summary>
/// <param name="connectionString">连接字符串</param>
/// <param name="cmdType">command命令类型</param>
/// <param name="cmdText">command存储过程名字或者SQL语句</param>
/// <param name="parames">command命令参数</param>
/// <returns></returns>
public static OracleDataReader ExecuteReader(string connectionString, CommandType cmdType, string cmdText, params OracleParameter[] parames)
{
OracleCommand cmd = new OracleCommand();
OracleConnection conn = new OracleConnection(connectionString);
try
{
PrepareCommand(cmd, conn, cmdType, cmdText, parames);
OracleDataReader dr = cmd.ExecuteReader(CommandBehavior.CloseConnection);
cmd.Parameters.Clear();
return dr;
}
catch
{
conn.Close();
throw;
}
} /// <summary>
/// 执行查询,并返回查询所返回的结果集中第一行的第一列。忽略其他列或行。
/// </summary>
/// <param name="connectionString">connection连接字符串</param>
/// <param name="cmdType">command命令类型</param>
/// <param name="cmdText">command存储过程名字或者SQl语句</param>
/// <param name="commandParameters">command命令参数</param>
/// <returns></returns>
public static object ExecuteScalar(string connectionString, CommandType cmdType, string cmdText, params OracleParameter[] commandParameters)
{
OracleCommand cmd = new OracleCommand();
using (OracleConnection conn = new OracleConnection(connectionString))
{
try
{
PrepareCommand(cmd, conn, cmdType, cmdText, commandParameters);
object result = cmd.ExecuteScalar();
cmd.Parameters.Clear();
return result;
}
finally
{
conn.Close();
}
}
}
/// <summary>
/// 执行命令返回DataSet对象
/// </summary>
/// <param name="connectionString">连接字符串</param>
/// <param name="cmdType">command命令类型</param>
/// <param name="cmdText">command存储过程名字或者SQl语句</param>
/// <param name="commandParameters">command命令参数</param>
/// <returns></returns>
public static DataSet ExecuteDateSet(string connectionString, CommandType cmdType, string cmdText, params OracleParameter[] commandParameters)
{
DataSet ds = new DataSet();
OracleCommand cmd = new OracleCommand();
using (OracleConnection conn = new OracleConnection(connectionString))
{
try
{
PrepareCommand(cmd, conn, cmdType, cmdText, commandParameters);
OracleDataAdapter caChe = new OracleDataAdapter();
caChe.SelectCommand = cmd;
caChe.Fill(ds);
cmd.Parameters.Clear();
}
finally
{
conn.Close();
}
}
return ds;
} /// <summary>
/// 执行查询语句,返回DataSet
/// </summary>
/// <param name="SQLString">查询语句</param>
/// <returns>DataSet</returns>
public static DataSet Query(string connectionString, string SQLString)
{
using (OracleConnection connection = new OracleConnection(connectionString))
{
DataSet ds = new DataSet();
try
{
connection.Open();
OracleDataAdapter command = new OracleDataAdapter(SQLString, connection);
command.Fill(ds, "ds");
}
catch (OracleException ex)
{
throw new Exception(ex.Message);
}
finally
{
if (connection.State != ConnectionState.Closed)
{
connection.Close();
}
}
return ds;
}
} /// <summary>
/// 执行command命令之前的准备工作
/// </summary>
/// <param name="cmd">command命令对象</param>
/// <param name="conn">connection连接对象</param>
/// <param name="cmdType">执行命令的类型</param>
/// <param name="cmdText">执行命名的名字或者SQL命令语句</param>
/// <param name="cmdParams">cmd命令的参数</param>
private static void PrepareCommand(OracleCommand cmd, OracleConnection conn, CommandType cmdType, string cmdText, OracleParameter[] cmdParams)
{
if (conn.State != ConnectionState.Open)
{
conn.Open();
} cmd.Connection = conn;
cmd.CommandText = cmdText;
cmd.CommandType = cmdType; if (cmdParams != null)
{
foreach (OracleParameter param in cmdParams)
{
cmd.Parameters.Add(param);
}
}
}
}
}
{
try
{
PrepareCommand(cmd, conn, cmdType, cmdText, oracleParames);
int result = cmd.ExecuteNonQuery();
cmd.Parameters.Clear();
return result;
}
finally
{
conn.Close();
}
}