SQL连接字符串一步步调试

sql connectionstring debug step by step?

本文关键字:调试 一步 连接 字符串 SQL      更新时间:2023-10-16

你好,我希望这是我最后一篇关于sql connectionsstrings....

我有一个用VS2010Express编写的win32console应用程序,我尝试连接我的SQL服务器。我想我做的一切都是正确的,"唯一"的问题是连接字符串。谁能确认一下代码中没有其他大的错误吗?

关于连接字符串,我已经尝试和尝试....一个站点建议您可以通过创建连接来获得一个有效的字符串。在桌面上打开Udl文件,双击它并通过对话框工作。当在文本编辑器中再次打开它时,找到了正确的连接字符串。在我的例子中是:

用户ID=Test;初始目录=Stackhoover;数据源=PETERPANSQLEXPRESS

也不工作....有没有一种方法来"调试"字符串?看看哪个部分是错误的,例如"错误的pwd"或"服务器未找到"?防火墙现在是关着的,所以这不是问题。_hr返回"E_Fail"调试器进入msado15。tli line1271

谢谢你的帮助!编码快乐!

#include "stdafx.h"
void HandleError(HRESULT)
{
MessageBox( NULL, L"ERROR", L"XX!",MB_ICONEXCLAMATION |MB_RETRYCANCEL);
}
int _tmain(int argc, _TCHAR* argv[])
{
HRESULT hr;                                     //http://en.wikipedia.org/wiki/HRESULT  
//creating a connection object
USEADO::_ConnectionPtr connection;
//create a recordset object
USEADO::_RecordsetPtr recordset;
 //      Initialize COM  
    if(FAILED(hr = CoInitialize(NULL)))
    {
        HandleError(hr); 
        return hr;
    }   
if(FAILED(hr = connection.CreateInstance(__uuidof(USEADO::Connection))))
    {
        HandleError(hr); 
        return hr;
    }
if(FAILED(hr = recordset.CreateInstance(__uuidof(USEADO::Recordset))))
    {
        HandleError(hr); 
        return hr;
    }
    connection->CursorLocation = USEADO::adUseServer; //http://dev.mysql.com/tech-resources/articles/vb-cursors-and-locks.html
                                       //adUseClient;

    //Data Source=myServerAddress;Initial Catalog=myDataBase;User Id=myUsername;Password=myPassword;
    connection->Open(L"Data Source=PETERPANSQLEXPRESS;Initial Catalog=Stackhoover; User Id=Test; Password = Test", L"", L"", USEADO::adConnectUnspecified);
    //connection->Open(L"Provider=SQLOLEDB.1;Persist Security Info=False;User ID=Test;Initial Catalog=Stackhoover;Data Source=PETERPANSQLEXPRESS", L"Test", L"Test", USEADO::adConnectUnspecified);
    //DRIVER=SQL Native Client;SERVER=.SQLExpress;Trusted_Connection=Yes;Initial Catalog=ADOTest;
    //connection->Open(L"DRIVER=SQL Native Client;SERVER=PETERPANSQLEXPRESS;Trusted_Connection=Yes;Initial Catalog=Stackhoover;", L"", L"", USEADO::adConnectUnspecified);
return 0;
}
我stdafx.h

 #pragma once
#import "C:ProgramDelade filerSystemadomsado15.dll"    rename_namespace("USEADO"),rename("EOF","EndOfFile")
// Define ADO Namespace as global
using namespace USEADO;
#include "targetver.h"
#include <stdio.h>
#include <tchar.h>

需要转义反斜杠,因此:

connection->Open(L"Data Source=PETERPANSQLEXPRESS;Initial Catalog=Stackhoover; User Id=Test; Password = Test", L"", L"", USEADO::adConnectUnspecified);
应:

connection->Open(L"Data Source=PETERPAN\SQLEXPRESS;Initial Catalog=Stackhoover; User Id=Test; Password = Test", L"", L"", USEADO::adConnectUnspecified);

如果你有User ID,那么你需要password。我也会忽略Persist Security Info。你还需要一个尾随的;。参见ConnectionStrings.com和MS页面

我希望一个连接字符串看起来更像这些取决于你是否使用SQL Server登录或Windows身份验证

提供者= SQLOLEDB.1;用户ID =测试;密码= foo;数据库= Stackhoover;服务器= PETERPAN SQLEXPRESS;

提供者= SQLOLEDB.1;综合安全= true;数据库= Stackhoover;服务器= PETERPAN SQLEXPRESS;