- 浏览: 434174 次
- 性别:
- 来自: 北京
-
文章分类
最新评论
-
weishuang:
全部无法访问
ArcGIS 资源 -
04023129:
请问一下怎么配置meetme有硬件要求么?
Asterks(软交换)里配置两部简单的SIP软电话 -
jayli426:
请教:
181 正被转接
202 被接受:用于转介
有 ...
所有已知的SIP处理应答状态码 -
ligg5034:
<ww:if test="sftd.equal ...
webwork<ww:if>标签的使用 -
wanggod:
请问我
return (Hello)super.getPort ...
java6 WebServices客户端
连接池
添加以下引用
System.EnterpriseServices
System.Runtime.Remoting
using System;
using System.IO;
using System.Text;
using System.Reflection;
using System.Runtime.InteropServices;
using System.EnterpriseServices;
[assembly: ApplicationName("POOLINGTEST")]
[assembly: AssemblyKeyFile("poolserver.snk")]
namespace PoolServer
{
[ObjectPooling(Enabled=true,MinPoolSize=0, MaxPoolSize=1,CreationTimeout=2000)]
[JustInTimeActivation(true)]
[ConstructionEnabled(Default="Workstation id=.;data source=.;initial catalog=card;integrated security=sspi")] //Text File to be created during construction
public class PooledFile : ServicedComponent
{
private string strConnection;
protected override void Construct(string constructString)
{
strConnection = constructString;
}
public string ConnectionString
{
get
{
return strConnection;
}
}
}
}
远程数据库访问类
添加以下引用
System.EnterpriseServices
System.Runtime.Remoting
添加连接池组件PoolServer.dll
using System;
using PoolServer;
using System.Reflection;
using System.Data;
using System.Data.SqlClient;
namespace RemoteTest
{
//SQL Server数据库连接类
public class SQLConnection:MarshalByRefObject
{
private SqlConnection m_sqlConn;
private SqlDataAdapter m_sqlDA;
private SqlCommand m_sqlComm;
public SQLConnection()
{
PooledFile pool = new PooledFile();
m_sqlConn = new SqlConnection(pool.ConnectionString);
}
//创建一个SQLConnection连接实例
public SQLConnection(string strConnection)
{
Console.WriteLine("有数构造");
m_sqlConn = new SqlConnection(strConnection);
}
//执行查询,返回DataSet对象(多条记录)
public DataSet executeQueryDS(string strQuery,string table)
{
open();
m_sqlDA = new SqlDataAdapter(strQuery, m_sqlConn);
DataSet ds = new DataSet();
m_sqlDA.Fill(ds,table);
close();
return ds;
}
//执行查询,返回SqlDataReader对象(一条记录)
//执行该方法后,必须执行close()方法以关闭SQL Server数据库连接
public SqlDataReader executeQueryDR(string strQuery)
{
open();
m_sqlComm = new SqlCommand(strQuery, m_sqlConn);
SqlDataReader dr;
dr = m_sqlComm.ExecuteReader();
return dr;
}
//执行更新,返回所影响的行数
public int executeUpdate(string strUpdate)
{
open();
m_sqlComm = new SqlCommand(strUpdate, m_sqlConn);
int rows;
rows = m_sqlComm.ExecuteNonQuery();
return rows;
}
public bool isExistProcudure(string sql, SqlParameter[] param)
{
m_sqlComm = new SqlCommand(sql, m_sqlConn);
m_sqlComm.CommandType = CommandType.StoredProcedure;
if (param != null)
{
foreach (SqlParameter parameter in param)
{
m_sqlComm.Parameters.Add(parameter);
}
}
open();
int n = Convert.ToInt32(m_sqlComm.ExecuteScalar());
close();
if (n >= 0)
{
return true;
}
else
{
return false;
}
}
//执行返回查询结果的存储过程
public SqlDataReader executeQueryProcedure(string strCommandText, SqlParameter[] param)
{
open();
m_sqlComm = new SqlCommand(strCommandText, m_sqlConn);
m_sqlComm.CommandType = CommandType.StoredProcedure;
if (param != null)
{
foreach (SqlParameter parameter in param)
{
if(parameter != null)
{
m_sqlComm.Parameters.Add(parameter);
}
}
}
SqlDataReader dr = m_sqlComm.ExecuteReader();
return dr;
}
//执行更新,返回所影响行数的存储过程
public int executeUpdateProcedure(string strCommandText, SqlParameter[] param)
{
open();
m_sqlComm = new SqlCommand(strCommandText, m_sqlConn);
m_sqlComm.CommandType = CommandType.StoredProcedure;
if (param != null)
{
foreach (SqlParameter parameter in param)
{
if(parameter != null)
{
m_sqlComm.Parameters.Add(parameter);
}
}
}
int rows = m_sqlComm.ExecuteNonQuery();
return rows;
}
//打开SQLConnection连接
public void open()
{
if(m_sqlConn.State == ConnectionState.Closed)
{
m_sqlConn.Open();
}
}
//关闭SQLConnection连接
public void close()
{
if(m_sqlConn.State == ConnectionState.Open)
{
m_sqlConn.Close();
}
}
}
}
服务器
添加以下引用System.EnterpriseServices
System.Runtime.Remoting
添加数据库访问类组件RemoteTest.dll
private SQLConnection obj;
private bool m_bSign=true;
private void sign()
{
TcpServerChannel channel = new TcpServerChannel(9932);
obj = new SQLConnection();
ChannelServices.RegisterChannel(channel);
ObjRef objref=RemotingServices.Marshal(obj, "TestLoader", typeof(SQLConnection));
}
private void btn_start_Click(object sender, System.EventArgs e)
{
//RemotingConfiguration.RegisterWellKnownServiceType(typeof(SQLConnection),
// "TestLoader", WellKnownObjectMode.Singleton );
if(m_bSign)
{
m_bSign=false;
this.sign();
}
else
{
ObjRef objrefWellKnown = RemotingServices.Marshal(obj, "TestLoader");
}
this.lb_message.Items.Clear();
this.lb_message.Items.Add("CM+服务器已起动!!!");
this.btn_start.Enabled=false;
this.btn_stop.Enabled=true;
}
private void btn_stop_Click(object sender, System.EventArgs e)
{
this.btn_stop.Enabled=false;
this.btn_start.Enabled=true;
RemotingServices.Disconnect(obj);
//ChannelServices.UnregisterChannel(channel);
this.lb_message.Items.Add("COM+服务器已关闭!!!");
}
private void menuItem_openServer_Click(object sender, System.EventArgs e)
{
if(m_bShowWnd==true)
{
this.Visible=true;
m_bShowWnd=false;
}
}
private void menuItem_minimize_Click(object sender, System.EventArgs e)
{
if(m_bShowWnd==false)
{
this.Visible=false;
m_bShowWnd=true;
}
}
private void menuItem_exit_Click(object sender, System.EventArgs e)
{
DialogResult result=MessageBox.Show("你确定要退出COM+服务器吗?如果单击是,它将终止所有访问数据库的服务.","信息提示",MessageBoxButtons.YesNo,MessageBoxIcon.Question);
if(result==DialogResult.Yes)
{
this.Close();
}
}
private void notifyIcon1_DoubleClick(object sender, System.EventArgs e)
{
m_bShowWnd=false;
this.Visible=true;
}
private void button1_Click(object sender, System.EventArgs e)
{
menuItem_exit_Click(null,null);
}
private void label2_Click(object sender, System.EventArgs e)
{
if(m_bShowWnd==false)
{
this.Visible=false;
m_bShowWnd=true;
}
}
客户端
添加以下引用
System.EnterpriseServices
System.Runtime.Remoting
添加数据库访问类组件RemoteTest.dll
using System;
using System.Runtime.Remoting;
using System.Runtime.Remoting.Channels;
using System.Runtime.Remoting.Channels.Tcp;
using RemoteTest;
using System.Data.SqlClient;
namespace Client
{
public class ClassClient
{
static void Main(string[] args)
{
try
{
ChannelServices.RegisterChannel(new TcpClientChannel());
SQLConnection loader=(SQLConnection)Activator.GetObject(typeof(SQLConnection),"tcp://localhost:9932/TestLoader");
if(loader==null)
{
Console.WriteLine("Unable to get remote");
}
else
{
SqlParameter[] param=new SqlParameter[2];
param[0] = new SqlParameter("@emp_id", SqlDbType.NChar, 9); //存储过程的输入参数
param[0].Value = "PMA42628M";
param[1] = new SqlParameter("@emp_name", SqlDbType.NVarChar, 20); //存储过程的输出参数
param[1].Direction = ParameterDirection.Output;
ESqlParameter[] eparam = new ESqlParameter[2];
eparam[0] = new ESqlParameter(param[0]);
eparam[1] = new ESqlParameter(param[1]);
IFormatter formatter = new BinaryFormatter();
Stream stream = new FileStream("MyFile.txt", FileMode.Create, FileAccess.Write, FileShare.None, 1000, true);
formatter.Serialize(stream, eparam);
//执行根据指定员工编号查询员工名字的存储过程
SqlDataReader dr =loader .executeQueryProcedure("prcGetEmpName", stream);
stream.Close();
stream = null;
GC.Collect();
System.Console.WriteLine("员工编号 : " + param[0].Value);
System.Console.WriteLine("员工名字 : " + param[1].Value);
conn.close();
}
catch(SingletonException err)
{
System.Console.WriteLine(err.Message);
}
catch(Exception err)
{
System.Console.WriteLine(err.ToString());
}
}
[Serializable]
public class ESqlParameter
{
public ESqlParameter(SqlParameter sPara)
{
this.paraName = sPara.ParameterName ;
this.paraLen = sPara.Size ;
this.paraVal = sPara.Value ;
this.sqlDbType= sPara.SqlDbType ;
}
public SqlParameter ToSqlParameter()
{
SqlParameter para = new SqlParameter(this.paraName ,this.sqlDbType ,this.paraLen) ;
para.Value = this.paraVal ;
return para ;
}
private string paraName = "" ;
public string ParaName
{
get
{
return this.paraName ;
}
set
{
this.paraName = value ;
}
}
private int paraLen = 0 ;
public int ParaLen
{
get
{
return this.paraLen ;
}
set
{
this.paraLen = value ;
}
}
private object paraVal = null ;
public object ParaVal
{
get
{
return this.paraVal ;
}
set
{
this.paraVal = value ;
}
}
private SqlDbType sqlDbType = SqlDbType.NVarChar ;
public SqlDbType SqlDbType
{
get
{
return this.sqlDbType ;
}
set
{
this.sqlDbType = value ;
}
}
}
一步:打开管理工具,打开服务,然后把所有关于COM+的服务起动
二步:起动Distributed Transaction Coordinator服务
三步:注册强名称
1.打开.net命令窗口
2.定位COM+所在目标,然后输入 sn -k 强名称
二步:起动服务器
三步:客房端访问
发表评论
-
Visual studio 2010无法安装Silverlight4 Tools的解决办法
2011-02-28 12:05 2255如果你也碰到这个问题,那么算你运气好;昨日下了园子里vs2 ... -
C# winform32位加密算法
2008-06-19 15:07 1433private string MD5(string sourc ... -
.net下的SHA-1与MD5加密算法
2008-06-19 15:07 2048//SHA-1算法string password = Syst ... -
用C#写的自定义数据库操作类
2008-06-19 15:06 1845using System;using System.Data; ... -
数据库、服务器设置
2008-06-19 15:05 1001private ConnClass.SqlConn sql; ... -
起泡排序与简单排序法
2008-06-19 15:03 995using System; namespace 排序算法{cl ... -
顺序查找与二分查找
2008-06-19 15:02 1220using System; namespace 查找算法{cl ... -
正则表达式应用范例
2008-06-19 15:02 940The following example shows the ... -
序列化与反序列化
2008-06-19 15:01 1303poorServer 代码 using System ... -
获取本机和远程计算机IP及MAC地址
2008-06-19 15:00 4795利用dns类和WMI规范获取I ... -
DataList里面用C#实现自定义分页
2008-06-19 14:59 1736PagedDataSource pds=new Pa ... -
ASP.NET里面用C#实现发送邮件
2008-06-19 14:59 1913if(TextBoxNumber1.Text==" ... -
如何控制DataGrid里的内容换行与不换行
2008-06-19 14:58 1925<FONT size=2><%@ Page ... -
在C#窗体应用程序中载入Web页
2008-06-19 14:57 4654用AxWebBrowser的准备 "工具箱&quo ... -
VS2005[C#] 操作 Excel 2003
2008-06-19 14:56 2623using System;using System.Colle ... -
VS C# 2008里只让应用程序只运行一个实例
2008-06-19 14:55 1548using System;using System.Colle ... -
VS C# 2008导入到Excel 2007
2008-06-19 14:54 2661string path = System.Environmen ... -
VS C# 2008导入到xml
2008-06-19 14:53 1307//创建MobileBackup.xml文件 ... -
VS C# 2008从xml里读取数据
2008-06-19 14:53 1273//从xml文件中读取发件箱信息 private ... -
VS C# 2008鼠标移上时与按下时动态改变PicturBox的背景图片
2008-06-19 14:52 1629//获得当前项目运行的路径 path ...
相关推荐
数据库连接池是一种管理数据库连接的技术,它可以复用预创建的数据库连接,而不是每次请求时都创建新的连接。这有助于减少数据库连接的开销,提高系统的性能和响应速度。常见的数据库连接池有C3P0、DBCP等。 ##### ...
数据库连接池在Java和SQL应用中扮演着至关重要的角色,它是优化数据库操作性能、提高系统资源利用率的关键技术。本文将深入探讨Java与SQL数据库连接池的概念、工作原理、优势以及如何在实际项目中进行配置和使用。 ...
数据库连接池是为了解决频繁创建和销毁数据库连接而产生的性能开销。它预先初始化一组数据库连接,并保存在内存中,当需要连接数据库时,不再直接创建新的连接,而是从连接池中获取已存在的连接,用完后归还而不是...
在Java编程中,数据库连接池是一种管理数据库连接的机制,它允许程序重复使用一个已经存在的数据库连接,而不是每次需要访问数据库时都创建新的连接。这极大地提高了应用的性能和效率,因为建立和关闭数据库连接是...
Druid是阿里巴巴开源的一款高性能、智能的数据库连接池。它不仅提供了强大的监控和扩展功能,还具备连接池管理、SQL解析、SQL执行效率分析等特性。Druid与SpringBoot的整合,使得数据库连接资源管理更加高效和稳定。...
数据库连接池是现代应用程序开发中的重要组件,它有效地管理和复用数据库连接,从而提高系统性能并减少资源消耗。本文将详细介绍Proxool数据库连接池及其监控功能,通过一个实际的实例来展示其工作原理和使用方法。 ...
数据库连接池是现代Java应用程序中管理数据库连接的关键技术,它能显著提高应用性能并优化资源利用率。在本示例中,我们将关注如何在Eclipse集成开发环境中配置和使用数据库连接池来连接MySQL数据库,主要涉及JDBC...
基于tp5的swoole支持,对th5的connection进行改造,使用Swoole\Coroutine\MySQL重写了基于swoole的PDO接口,实现了mysql的数据库连接池,本地测试可用。使用时,替换thinkphp/library/think/db/Connection.php,并...
连接池是一种用于管理数据库连接的技术,它可以复用现有的连接,避免频繁创建和销毁连接所带来的资源开销。使用连接池可以显著提升数据库访问速度,并且能够更好地控制并发访问。 #### 三、JSP应用中使用连接池的...
数据库连接池是在应用服务器启动时预创建一定数量的数据库连接,然后在应用运行过程中,当需要与数据库交互时,不再直接创建新的连接,而是从连接池中获取一个已存在的连接,用完后归还,而不是关闭,这样减少了...
标题 "Spring+Hibernate+Proxool连接池" 涉及到的是在Java Web开发中,如何使用Spring框架集成Hibernate ORM框架,并结合Proxool作为数据库连接池的技术实践。这通常是为了提高应用性能,有效管理和复用数据库连接,...
根据题目提供的链接(https://repo1.maven.org/maven2/com/alibaba/druid/),我们可以了解到德鲁伊数据库连接池jar包的下载地址。通常情况下,开发人员会通过Maven或Gradle等构建工具将Druid加入到项目的依赖中。...
数据库连接池是现代Web应用程序中不可或缺的组件,它有效地管理数据库连接,提高系统性能并减少资源浪费。在Java环境中,常见的连接池实现有Apache的DBCP、C3P0、HikariCP以及Tomcat内置的Tomcat-jdbc-pool等。本...
本项目结合了MyBatis作为持久层框架,以及Durid作为数据库连接池,进一步优化了数据库操作的性能。同时,Freemarker被选为视图模板引擎,用于生成动态HTML页面。下面将详细解释这些技术及其在项目中的应用。 1. **...
连接池是一种管理数据库连接的机制,它预先创建并维护一定数量的数据库连接,当应用程序需要时,可以从池中获取一个已存在的连接,使用完毕后再归还,而不是每次建立新的连接。这样可以显著减少连接的创建和销毁时间...
Druid是阿里巴巴开源的一个高性能的数据库连接池实现,除了基本的数据库连接池功能外,它还提供了强大的监控和扩展能力。Druid可以监控数据库连接池的状态,包括连接的创建、关闭、空闲、活跃等信息,这对于系统的...