关于SQL Sever连接采用不同连接的效率测试

最近,做了一下关于SQL Sever连接采用不同连接效率测试


连接程序:

HRESULT CADO::OpenDataBase(CString strConnectionStr)
{
	CoInitializeEx( NULL, COINIT_MULTITHREADED );


	HRESULT hr = E_FAIL;


	try
	{
		if(NULL == m_pConnPtr )
		{
			hr = m_pConnPtr.CreateInstance(__uuidof(Connection));


			if (FAILED(hr))		//创建失败
				return hr;
		}
		
		//连接状态
		if(m_pConnPtr->State)
		{
			m_pConnPtr->Close ();
		}


		hr = S_FALSE;


		//打开数据库
		hr = m_pConnPtr->Open(_bstr_t(strConnectionStr),
			_T(""),_T(""),
			adConnectUnspecified);


		if (hr == S_OK)
		{
			m_pCommandPtr.CreateInstance(__uuidof(Command));


			m_pCommandPtr->ActiveConnection = m_pConnPtr;




		}


	}catch(...){
		hr = S_FALSE;
	}


	return hr;


}

采用相同的查询方式

---------------------------
  启动<<查 询>>服务
---------------------------


1. 查询记录

Select 
	 ZhLGD.Name,Route.Name,[1ZhChD].Name,Wafer.Name,PQS.Name,[10010].[ID_Oper],[10010].[DT_Oper],[10010].[ID_MoveOut],[10010].[DT_MoveOut] 
From 
	ZhLGD,[10010],Route,[1ZhChD],Wafer,PQS 
Where  
     [10010].[ID_ZhLGD] = ZhLGD.[ID_ZhLGD] 
and  [10010].[ID_Route] = Route.[ID_Route] 
and  [10010].[ID_ZhChD] = [1ZhChD].[ID_ZhChD] 
and  [10010].[ID_Wafer] = Wafer.[ID_Wafer] 
and  [10010].[ID_PQS] = PQS.[ID_PQS]  
ORDER BY [1ZhChD].Name ASC ,[Wafer].Name ASC


连接方式1:

	CString strConnectionStr;
   	strConnectionStr.Format(_T("driver={SQL Server};Server=%s,1433;DATABASE=%s;UID=%s;PWD=%s")
        ,g_strIP
        ,g_strDB
        ,g_strName
        ,g_strPWD
        );    

结果:

---->> 耗时:9.406s

   共筛选出:5584 条记录

连接方式2:

	// 具有比较高的效率
	strConnectionStr.Format(_T("Provider=SQLOLEDB;Server=%s;Database=%s; uid=%s; pwd=%s;")
		,g_strIP
		,g_strDB
		,g_strName
		,g_strPWD
		);

---->> 耗时:1.141s
   共筛选出:5584 条记录


显而易见,不同的连接方式,对查询效率影响是非常大的。采用

SQLOLEDB 方式连接是非常高效的。



### C# 连接 SQL Server 示例 为了实现 C# 应用程序与 SQL Server连接,需遵循几个重要步骤。首先,在项目中添加 `Microsoft.Data.SqlClient` 包以支持 SQL Server 数据库操作[^3]。 安装包命令如下: ```bash dotnet add package Microsoft.Data.SqlClient ``` 创建 `SqlConnection` 对象时,应提供一个有效的连接字符串,该字符串包含服务器地址、数据库名以及认证信息等必要参数[^1]。 #### 定义连接字符串 定义连接字符串的方式取决于目标数据库的具体配置。下面是一个典型的例子: ```csharp string connectionString = "Server=myServerAddress;Database=myDataBase;User Id=myUsername;Password=myPassword;"; ``` 此代码片段展示了如何构建一个基本的连接字符串来指定要访问的 SQL Server 实例及其登录凭证。 #### 建立并测试连接 一旦有了连接字符串,就可以利用它实例化一个新的 `SqlConnection` 并尝试打开连接。这一步骤通常放在 `using` 语句块内执行,以便自动管理资源释放[^2]。 ```csharp using (SqlConnection connection = new SqlConnection(connectionString)) { try { connection.Open(); Console.WriteLine("Successfully connected to the database."); } catch (Exception e) { Console.WriteLine("Failed to connect to the database."); Console.WriteLine($"Error message: {e.Message}"); } } ``` 上述代码演示了怎样安全地开启一次数据库会话,并处理可能出现的异常情况。 #### 注意事项 - **安全性**:避免硬编码敏感信息如用户名和密码;考虑采用更安全的方法存储这些值。 - **错误处理**:始终为潜在的操作失败做好准备,比如网络中断或者权限不足等问题。 - **性能优化**:对于频繁使用的连接建议使用连接池技术提高效率
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值