SQL Server2000 企业管理器 "管理单元初始化失败"

安装好SQL Server 2000后,打开企业管理器提示“管理单元初始化失败”
管理单元初始化失败
名称<未知>
CLSID:{00100100-1816-11D0-8EF5-00AA0062C58F}

解决方法:

通过批处理将SQL相关文件全部注册一遍来解决这个问题。

把以下内容粘贴到记事本作成*bat文件执行。


@echo on
regsvr32 autoplt.dll /s
regsvr32 autowiz.dll /s
regsvr32 axscphst.dll /s
regsvr32 cdwtasks.dll /s
regsvr32 cdwtskui.dll /s
regsvr32 colctrl.dll /s
regsvr32 comnevnt.dll /s
regsvr32 ctasksui.dll /s
regsvr32 custtask.dll /s
regsvr32 dtsffile.dll /s
regsvr32 dtspkg.dll /s
regsvr32 dtspump.dll /s
regsvr32 dtsui.dll /s
regsvr32 dtswiz.dll /s
regsvr32 hhsetup.dll /s
regsvr32 objmgr.dll /s
regsvr32 pfclnt80.dll /s
regsvr32 pfutil80.dll /s
regsvr32 psdcscm.dll /s
regsvr32 sdiclnt.dll /s
regsvr32 semcomn.dll /s
regsvr32 Semcros.dll /s
regsvr32 Semdll.dll /s
regsvr32 semdts.dll /s
regsvr32 SEMEXEC.dll /s
regsvr32 semmap.dll /s
regsvr32 semnt.dll /s
regsvr32 Semobj.dll /s
regsvr32 semrepl.dll /s
regsvr32 semsfc.dll /s
regsvr32 Semsys.dll /s
regsvr32 semwebwz.dll /s
regsvr32 Semwiz.dll /s
regsvr32 sqdedev.dll /s
regsvr32 SQLDMO.dll /s
regsvr32 sqlftwiz.dll /s
regsvr32 sqlgui.dll /s
regsvr32 sqllex.dll /s
regsvr32 sqlmmc.dll /s
regsvr32 sqlns.dll /s
regsvr32 sqlqry.dll /s
regsvr32 sqlresld.dll /s
regsvr32 sqlsui.dll /s
regsvr32 sqlsvc.dll /s
regsvr32 sqlvdir.dll /s
regsvr32 stardds.dll /s
regsvr32 svrnetcn.dll /s
regsvr32 w95scm.dll /s

 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
好的,这是一个比较复杂的问题,我会尽量详细地回答你。 首先,我们需要明确一下,ADO是什么。ADO(ActiveX Data Objects)是一种Microsoft的数据访问技术,它提供了一种访问各种数据源的统一方式,包括SQL Server、Oracle、Access等等。使用ADO可以方便地进行数据库的操作,包括增、删、改、查等。 接下来,我们来看一下如何使用C++封装ADO来实现参数化SQL Server的增删查改。 1. 引入头文件和命名空间 首先,我们需要引入头文件和命名空间。头文件包括<comutil.h>和<ado.h>,命名空间为ADODB。代码如下: ```cpp #include <comutil.h> #include <ado.h> using namespace ADODB; ``` 2. 建立连接 建立连接是数据库操作的第一步。我们可以定义一个函数来建立连接,代码如下: ```cpp _ConnectionPtr m_pConnection; // 连接对象 void ConnectDatabase() { try { ::CoInitialize(NULL); // 初始化COM库 m_pConnection.CreateInstance(__uuidof(Connection)); // 创建连接对象 // 设置连接字符串,这里的“test”是数据库名称,你需要根据实际情况修改 m_pConnection->ConnectionString = _bstr_t("Provider=SQLOLEDB.1;Data Source=(local);Initial Catalog=test;Integrated Security=SSPI;"); m_pConnection->Open("", "", "", adConnectUnspecified); // 建立连接 } catch (_com_error e) { // 连接失败,输出错误信息 printf("Connect database failed: %s\n", (char*)e.Description()); } } ``` 这里的连接字符串中,Data Source是数据库服务器名称,Initial Catalog是数据库名称,Integrated Security=SSPI表示使用Windows身份验证方式登录。如果需要使用用户名和密码登录,可以将Integrated Security设置为False,并且在ConnectionString中添加User ID和Password属性。 3. 执行SQL语句 建立连接之后,我们就可以执行SQL语句了。我们可以定义一个函数来执行SQL语句,代码如下: ```cpp _RecordsetPtr m_pRecordset; // 记录集对象 void ExecuteSQL(const char* szSQL) { try { m_pRecordset.CreateInstance(__uuidof(Recordset)); // 创建记录集对象 m_pRecordset->Open(_bstr_t(szSQL), m_pConnection.GetInterfacePtr(), adOpenDynamic, adLockOptimistic, adCmdText); // 执行SQL语句 } catch (_com_error e) { // 执行失败,输出错误信息 printf("Execute SQL failed: %s\n", (char*)e.Description()); } } ``` 这里的szSQLSQL语句,例如: ```cpp const char* szSQL = "SELECT * FROM Table1"; ``` 4. 参数化SQL语句 为了防止SQL注入攻击,我们需要对SQL语句进行参数化处理。我们可以定义一个函数来实现参数化SQL语句,代码如下: ```cpp _CommandPtr m_pCommand; // 命令对象 _ParameterPtr m_pParameter; // 参数对象 void ExecuteParamSQL(const char* szSQL, const char* szName, const char* szValue) { try { m_pCommand.CreateInstance(__uuidof(Command)); // 创建命令对象 m_pCommand->ActiveConnection = m_pConnection; // 设置连接对象 m_pCommand->CommandText = _bstr_t(szSQL); // 设置SQL语句 m_pParameter = m_pCommand->CreateParameter(_bstr_t(szName), adVarChar, adParamInput, strlen(szValue), _variant_t(szValue)); // 创建参数对象 m_pCommand->Parameters->Append(m_pParameter); // 添加参数对象 m_pRecordset = m_pCommand->Execute(NULL, NULL, adCmdText); // 执行命令并返回记录集对象 } catch (_com_error e) { // 执行失败,输出错误信息 printf("Execute param SQL failed: %s\n", (char*)e.Description()); } } ``` 这里的szName是参数名称,szValue是参数值,例如: ```cpp const char* szSQL = "SELECT * FROM Table1 WHERE Name = ?"; const char* szName = "Name"; const char* szValue = "John"; ExecuteParamSQL(szSQL, szName, szValue); ``` 5. 增删查改 最后,我们来看一下如何进行增删查改操作。 增: ```cpp const char* szSQL = "INSERT INTO Table1 (Name, Age) VALUES (?, ?)"; const char* szName = "Name"; const char* szValue1 = "John"; const char* szAge = "Age"; const char* szValue2 = "20"; ExecuteParamSQL(szSQL, szName, szValue1, szAge, szValue2); ``` 删: ```cpp const char* szSQL = "DELETE FROM Table1 WHERE Name = ?"; const char* szName = "Name"; const char* szValue = "John"; ExecuteParamSQL(szSQL, szName, szValue); ``` 查: ```cpp const char* szSQL = "SELECT * FROM Table1 WHERE Age > ?"; const char* szName = "Age"; const char* szValue = "18"; ExecuteParamSQL(szSQL, szName, szValue); while (!m_pRecordset->adoEOF) { // 输出记录集中的数据 printf("%s\t%d\n", (char*)_bstr_t(m_pRecordset->Fields->GetItem("Name")->Value), m_pRecordset->Fields->GetItem("Age")->Value.intVal); m_pRecordset->MoveNext(); } ``` 改: ```cpp const char* szSQL = "UPDATE Table1 SET Age = ? WHERE Name = ?"; const char* szName1 = "Age"; const char* szValue1 = "30"; const char* szName2 = "Name"; const char* szValue2 = "John"; ExecuteParamSQL(szSQL, szName1, szValue1, szName2, szValue2); ``` 以上就是C++封装ADO实现参数化SQL Server的增删查改的方法。希望对你有帮助!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值