我在VC中的代码如下
class ADOConn  
{
public:
_ConnectionPtr m_pConnection;
_RecordsetPtr m_pRecordset;
public:
ADOConn();
virtual ~ADOConn();
void OnInitADOConn();
_RecordsetPtr& GetRecordSet(_bstr_t bstrSQL);
BOOL ExecuteSQL(_bstr_t bstrSQL);
void ExitConnect();
};
#include "stdafx.h"
#include "wuliu.h"
#pragma once#include "ADOConn1.h"
#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////ADOConn::ADOConn()
{}ADOConn::~ADOConn()
{}
void ADOConn::OnInitADOConn()
{
::CoInitialize(NULL);
try
{
m_pConnection.CreateInstance("ADODB.Connection");
_bstr_t strConnect= "Provider=SQLOLEDB;Server=MICOSOFT-69363E\SQLEXPRESS;Database=物流;uid=liuchang;pwd=45137141";
m_pConnection->Open(strConnect,"","",adModeUnknown);
}
//uid=MICOSOFT-69363E\Adminstrator;pwd=111111
catch(_com_error e)
{
AfxMessageBox(e.Description());
}
}//
_RecordsetPtr& ADOConn::GetRecordSet(_bstr_t bstrSQL)
{
try
{
if(m_pConnection==NULL)
OnInitADOConn();
m_pRecordset.CreateInstance(_uuidof(Recordset));
m_pRecordset->Open(bstrSQL,m_pConnection.GetInterfacePtr(),adOpenDynamic,
adLockOptimistic,adCmdText);
}
catch(_com_error e)
{
AfxMessageBox(e.Description());
}
return m_pRecordset;
}
//
BOOL ADOConn::ExecuteSQL(_bstr_t bstrSQL)
{
try
{
if(m_pConnection==NULL)
OnInitADOConn();
m_pConnection->Execute(bstrSQL,NULL,adCmdText);
return true;
}
catch(_com_error e)
{
AfxMessageBox(e.Description());
return false;
}
}//
void ADOConn::ExitConnect()
{
//
if(m_pRecordset!=NULL)
m_pRecordset->Close();
m_pConnection->Close();
//
::CoUninitialize();
}编译没问题,但当我用VC链接数据库时有[DENETLTB][ConnectionOpen(Connect()).]SQL Server不存在或拒绝访问
怎么办?

解决方案 »

  1.   

    先 ping 再telnet MICOSOFT-69363E\SQLEXPRESS 1433 
      

  2.   

    [DENETLTB][ConnectionOpen(Connect()).]SQL Server
    连接无法用于执行此操作。在此上下文中它可能已被关闭或无效
      

  3.   

    我就是写了登录界面,在界面里输入 密码账户之后 就出现
    DENETLTB][ConnectionOpen(Connect()).]SQL Server 
    连接无法用于执行此操作。在此上下文中它可能已被关闭或无效
      

  4.   

    telnet MICOSOFT-69363E\SQLEXPRESS 1433 的结果

    不能连接到主机的连接 在端口 1433 连接失败
      

  5.   

    网络不通。
    本文收录了不能连接SQL Server ,报 The  Network  Adapter  could  not  establish  the  connection  异常的所有遇到过的原因,并提供了图形化的排查向导。 
    不过根据经验,没有升级到SP4的可能性最高。可以直接看第6部分。 常见的错误为: The  Network  Adapter  could  not  establish  the  connection  
    1 检查SQL SERVER 是否允许远程访问. 
    具体步骤: 
      1)打开"企业管理器",打开控制台根目录>SQL Server 组>数据库 
      2)在相应"数据库"上单击右键,选择"属性" 
      3)选择"连接"选项卡,检查"远程服务器连接"下,RPC服务是否选择. 
    2 使用telnet IP地址 1433,系统是否提示连接出错 
    比如 telnet 127.0.0.1 1433 
    如果出现黑屏,这端口正常 
    如系统提示出错 
      检查是否防火墙屏蔽了SQL SERVER 或 java IDE 的网络访问端口 
      如果是,关闭防火墙,重新启动SQL SERVER和java IDE,进行测试, 
      如果系统仍提示上述错误,尝试下列步骤 
    3 检查SQL SERVER 端口号及是否启用了TCP/IP协议 
    具体步骤: 
      1)打开"企业管理器",打开控制台根目录>SQL Server 组>数据库 
      2)在相应"数据库"上单击右键,选择"属性" 
      3)选择"常规"选项卡,点击"网络配置",如启用的协议中无"TCP/IP协议"将其加入 
      4)选择"TCP/IP协议",点击"属性",检查其端口号是否为1433 
     5)如端口号为1433将其修改为其它端口号,修改jdbc连接语句,将端口号同样改为新启用的端口号,如jdbc:microsoft:sqlserver://server_name:1400(假设新端口号为 1400) 4 以下的方法你每种的去试试: 
      1)检查一下sql server的connection有没有full. 
      2)如果是认证的问题.  可到sql enterprice manager->指定server->内容->安全性.  把验证改为 SQL server 及 windows. 
      3)点选属性检查一下port是否正确. 
      4)执行%MSSQL_HOME%\80\Tools\Binn\SVRNETCN.exe 
        把TCP/IP启用. 
      5)关掉防火墙. 
      6)把SQL server update到sp4: 
      http://www.microsoft.com/downloads/details.aspx?displaylang=zh-cn&FamilyID=8E2DFC8D-C20E-4446-99A9-B7F0213F8BC5 
      经我验证,一般升级到sp4就好用了! 
      注意升级的方法,不是双击运行就可以了,这个SP4是解压缩程序,你要指定一个目录,推荐c:\,解压缩后,需要转到那个目录运行里面的setup.bat才是真正的安装。不知道为何微软不直接调用那个。搞不懂!!!   8) 在 SQL Server 2005 里面,如果出现 
      到主机  的 TCP/IP 连接失败。 java.net.ConnectException: Connection refused: connect 
      sqlserver2005默认情况下是禁用了tcp/ip连接。启动tcp/ip连接的方法, 
      打开 \Microsoft SQL Server 2005\配置工具\目录下的SQL Server Configuration Manager,选择mssqlserver协议, 
      然后右边窗口有个tcp/ip协议,然后启动它,把sqlserver服务停了,然后在启动。问题就解决了