ADO连接vs2010和sql server

连接字符串的正确性关系着数据库连接的成功性。
字符串的内容可从以下方式获得。
使用新建文件进行连接测试。新建ado.text。然后更改为ado.udl。双击后选择。

1

2

注意:服务器名称有的后缀有\SQLEXPRESS,有的没有点击测试连接,如果连接不上。则按下列方法解决。

解决过程:
1 看防火墙是否关闭,没有问题,服务器是否启动

2 先用ping ip 的方法,成功返回数据,证明有物理连接

3 用telnet ip地址 1433 测试一下不能成功,查看服务器端口1433没问题

4 检查sql server用户认证方式,混合身份验证方式,没问题

5 数据库,右击属性,连接,允许远程连接到此服务器

6.打开sql server 配置管理器
1)打开SQLServer配置管理器->SQLServer网络配置->SQL2008的协议(您使用的那一个,比如我的MSSQLSERVER的协议)->双击TCP/IP->Ip地址。
2)找到ip地址为127.0.0.1的选栏将TCP端口填上1433,已启用选择是;
3)找到ip地址为本机IP地址的选栏将TCP端口填上1433,已启用选择是。
4)在IPALL下面的TCP端口中设置为1433。(关键)
5)重启服务器

第一步和第六步最重要。经过以上步骤,一般连接成功。
字符串一般表示为

 m_pConnection->Open("Provider=SQLOLEDB.1; Data Source=10.13.**.**\\SQLEXPRESS,1433;Database=maintenance;Persist Security Info=False;UID=sa;PWD=**;","","",NULL);//通
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,下面是一个简单的示例代码,演示如何使用C++封装ADO连接SQL Server进行增删查改操作: ```cpp #include <iostream> #include <windows.h> #include <comdef.h> #include <atlbase.h> #import "C:\Program Files\Common Files\System\ado\msado15.dll" no_namespace rename("EOF", "adoEOF") class CSQLServer { public: CSQLServer(); ~CSQLServer(); bool Connect(const std::string& strServer, const std::string& strDatabase, const std::string& strUser, const std::string& strPassword); void Disconnect(); bool ExecuteNonQuery(const std::string& strSQL); bool ExecuteScalar(const std::string& strSQL, _variant_t& vtResult); private: bool InitADO(); void UninitADO(); private: _ConnectionPtr m_pConnection; }; CSQLServer::CSQLServer() { InitADO(); } CSQLServer::~CSQLServer() { UninitADO(); } bool CSQLServer::Connect(const std::string& strServer, const std::string& strDatabase, const std::string& strUser, const std::string& strPassword) { try { std::string strConnString = "Provider=SQLOLEDB.1;"; strConnString += "Persist Security Info=False;"; strConnString += "Data Source=" + strServer + ";"; strConnString += "Initial Catalog=" + strDatabase + ";"; strConnString += "User ID=" + strUser + ";"; strConnString += "Password=" + strPassword + ";"; m_pConnection->Open(strConnString.c_str(), "", "", adConnectUnspecified); return true; } catch (_com_error& e) { std::cout << "Connect failed, error message: " << e.Description() << std::endl; return false; } } void CSQLServer::Disconnect() { m_pConnection->Close(); } bool CSQLServer::ExecuteNonQuery(const std::string& strSQL) { try { _RecordsetPtr pRecordset; pRecordset = m_pConnection->Execute(strSQL.c_str(), NULL, adCmdText); return true; } catch (_com_error& e) { std::cout << "ExecuteNonQuery failed, error message: " << e.Description() << std::endl; return false; } } bool CSQLServer::ExecuteScalar(const std::string& strSQL, _variant_t& vtResult) { try { _RecordsetPtr pRecordset; pRecordset = m_pConnection->Execute(strSQL.c_str(), NULL, adCmdText); if (pRecordset->adoEOF == true) { vtResult.Clear(); return false; } vtResult = pRecordset->Fields->GetItem((long)0)->Value; return true; } catch (_com_error& e) { std::cout << "ExecuteScalar failed, error message: " << e.Description() << std::endl; return false; } } bool CSQLServer::InitADO() { try { HRESULT hr = CoInitialize(NULL); if (FAILED(hr)) { std::cout << "CoInitialize failed" << std::endl; return false; } hr = m_pConnection.CreateInstance(__uuidof(Connection)); if (FAILED(hr)) { std::cout << "CreateInstance failed" << std::endl; CoUninitialize(); return false; } return true; } catch (_com_error& e) { std::cout << "InitADO failed, error message: " << e.Description() << std::endl; return false; } } void CSQLServer::UninitADO() { m_pConnection.Release(); CoUninitialize(); } int main() { CSQLServer sqlServer; if (!sqlServer.Connect("localhost", "MyDatabase", "sa", "123456")) { return 0; } // 插入数据 std::string strSQL = "INSERT INTO MyTable (Name, Age) VALUES ('Tom', 20)"; sqlServer.ExecuteNonQuery(strSQL); // 修改数据 strSQL = "UPDATE MyTable SET Age = 21 WHERE Name = 'Tom'"; sqlServer.ExecuteNonQuery(strSQL); // 查询数据 strSQL = "SELECT Age FROM MyTable WHERE Name = 'Tom'"; _variant_t vtResult; if (sqlServer.ExecuteScalar(strSQL, vtResult)) { std::cout << "Tom's age is " << (int)vtResult.intVal << std::endl; } else { std::cout << "Tom not found!" << std::endl; } // 删除数据 strSQL = "DELETE FROM MyTable WHERE Name = 'Tom'"; sqlServer.ExecuteNonQuery(strSQL); sqlServer.Disconnect(); return 0; } ``` 上述代码使用`CSQLServer`类封装了ADO连接SQL Server的操作,并提供了插入、修改、查询、删除数据的方法。在使用时,只需要创建一个`CSQLServer`对象,调用`Connect`方法连接数据库,然后调用相应的方法执行SQL语句即可。 注意:上述代码使用了`#import`指令引入了`msado15.dll`库,需要确保该库已经安装在您的系统中。另外,需要链接`comsupp.lib`库。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值