webservice的中间件_对mysql数据库进行控制_数据库及WebService通过线程控制连接时间管理...

using System;

using System.Threading;

using System.Data;

using System.Data.SqlClient;

using System.Data.OleDb;

using System.Data.Odbc;

namespace Logic

{

/**/

///

/// 连接类型

///

public enum DatabaseType

{

SqlServer,

Odbc,

Oracle,

OleDB,

WebService

}

/**/

///

/// 通过线程控制数据库及WebService连接时间管理

///

public class XngConnConsole

{

private bool bIsConn = false;                    // 判断连接是否成功

private Thread tdConn;                            // 连接数据库的线程

private string strConn = null;                    // 连接字符串

private int nTimeout = 0;                        // 超时时间

private DatabaseType dbType;                    // 数据库类型

private IDbConnection iConn = null;     // 数据库连接字符串对象接口

private object result = null;           //WebService 委托方法返回的结果

public delegate object ConnWebService(object[] args);  //WebService 委托类型

private ConnWebService conWebService;  //WebService 委托

/**/

///

///数据库构造函数

///

/// 连接字符串

/// 超时时间(毫秒)

/// 数据库类型

public XngConnConsole(string Conn, int timeOut, DatabaseType DBType)

{

strConn = Conn;

nTimeout = timeOut;

dbType = DBType;

}

/**/

///

/// WebService构造函数

///

/// 连接字符串

/// 超时时间(毫秒)

/// 数据库类型

///   /// WebService委托

public XngConnConsole(int timeOut, DatabaseType DBType, ConnWebService _conWebService)

{

//strConn = Conn;

nTimeout = timeOut;

dbType = DBType;

conWebService = _conWebService;

}

/**/

///

/// 打开数据库或WebService

///

/// WebSerivew委托参数

/// 连接对象接口

public object Open(object[] args)

{

iConn = null;

result = null;

tdConn = new Thread(() => { ConnDatabase(args); });

Thread tdTimeOut = new Thread(new ThreadStart(ConsoleTimeOut));

tdConn.SetApartmentState(ApartmentState.MTA);

tdConn.IsBackground = true;

tdTimeOut.Start();

tdTimeOut.Priority = ThreadPriority.Highest;

tdConn.Start();

tdTimeOut.Join(nTimeout);             //连接超时控制线程,不然主线程会直接返回null.  !!!!

if (dbType != DatabaseType.WebService)

{

return iConn;

}

else

{

return result;

}

}

/**/

///

/// 超时控制

///

private void ConsoleTimeOut()

{

Thread.Sleep(nTimeout);

if (bIsConn == false)

{

tdConn.Abort();

tdConn = null;

iConn = null;

}

}

/**/

///

/// 连接数据库

///

private void ConnDatabase(object[] args)

{

try

{

//根据数据连接类型创建数据访问类

switch (dbType)

{

case DatabaseType.SqlServer:

iConn = new SqlConnection(strConn);

iConn.Open();

break;

case DatabaseType.Odbc:

iConn = new OdbcConnection(strConn);

iConn.Open();

break;

case DatabaseType.OleDB:

iConn = new OleDbConnection(strConn);

iConn.Open();

break;

case DatabaseType.Oracle:

iConn = new OleDbConnection(strConn);

iConn.Open();

break;

case DatabaseType.WebService:

if (conWebService != null)

{

result = conWebService.Invoke(args);

break;

}

else

{

bIsConn = false;

return;

}

}

bIsConn = true;

}

catch (Exception exp)

{

}

}

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值