C++与SQL Server2008连接及配置

SQL Server2008配置

安装完成后需要确保SQL Server服务启动,启动的步骤如下:
1. 在开始菜单–>Microsoft SQL Server 2008 R2–>配置工具–>sql server 配置管理器,打开配置管理器,切换到如下界面
C++与SQL Server2008连接及配置_第1张图片
在这个界面中启动如图中的服务,启动方法:右击–>启动
如果切换开启用户为本地电脑账户,则需要本地电脑账户设置密码,否则会提示错误

然后切换到如下界面:
C++与SQL Server2008连接及配置_第2张图片
在这个界面中启动右侧中SQL Server(MSSQLSERVER)这个选项(如果是启动状态,配置了如上中的界面,就需要重新启动)
2. 在开始菜单–>Microsoft SQL Server 2008 R2–>SQL Server Management Studio,打开SQL Server Management Studio软件登陆数据库如下图所示:
C++与SQL Server2008连接及配置_第3张图片
配置账户sa
点击连接进入数据库管理界面,,在数据库中已经默认创建了一个登陆名(sa), 右击登陆名下的sa–>属性,进入如下界面
C++与SQL Server2008连接及配置_第4张图片
在这个界面(常规)中设置密码(密码确认密码是以后用sa登陆数据库的密码),切换到状态界面中,如下图设置
C++与SQL Server2008连接及配置_第5张图片
如果禁用拒绝,C++连接就会出现异常
配置数据库安全性连接配置
配置数据库的安全性,右击数据库服务(根目录)–>属性–>安全性,如下图配置:
C++与SQL Server2008连接及配置_第6张图片
服务器身份验证一定要选择SQL Server和Windows 身份验证模式,否则C++用sa这个用户名登陆不上,会出现提示未知错误
连接选项卡中,勾选允许连接到此服务器,不然连接数据库失败

SQL Server2008的问题

  1. 已成功与服务器建立连接,但是在登录过程中发生错取。(provider:共享内存提供程序,error:0-管道的另一端上无任何进程。)(Microsoft SQL Server,错误:233)
    解决方法:打开程序所有程序Microsoft SQL Server 2005配置工具SQL Server 配置管理器,在弹出的窗体中,找到SQL Server 2005 网络配置,把MSSQLSERVER的协议下的Named PipesTCP/IP启动,然后重新启动Microsoft SQL Server 2005就可以了。
  2. SQL Server 配置管理器远程过程调用失败。[0x800706be]解决方案
    电脑上安装了两个版本的SQL server,卸载另个SQL server版本

C++操作SQL Server2008

连接数据库

  1. 加载.dll文件
using namespace std;
#import "path\\msado15.dll" no_namespace rename("EOF", "adoEOF")  /*path是msado15.dll的路径*/
/*在类中定义如下几个变量*/
_ConnectionPtr m_pConnection;  
_CommandPtr m_pCommand;  
_RecordsetPtr m_pRecordSet;/*如果_ConnectionPtr提示未找到,检查你的msado15.dll路径是否设置正确*/
  1. 连接数据库
HRESULT hr=CoInitialize(NULL);  //初始化COM  ;  
if(FAILED(hr))
{
    //初始化COM失败  ;  
    return;
}
hr = m_pConnection.CreateInstance(("ADODB.Connection")); /*创建实例*/
/*hr = m_pConnection.CreateInstance(__uuidof (Connection ));*/
if(FAILED(hr))
{
    //对象指针实例化失败  ;  
    return;
}
try  
{
    _bstr_t strConnect= "Provider=SQLOLEDB.1;Password=123;Persist Security Info=True;User ID=sa;Initial Catalog=QPServerInfoDB;Data Source=192.168.1.7,1433;";/*Data Source 是本机IP地址或者网络地址*/
    /*"Provider=SQLOLEDB.1;Password=123;Persist Security Info=False;User ID=sa;Initial Catalog=QPServerInfoDB;Data Source=PC201602252148";*/
    /*"Driver={sql server};server=PC201602252148;uid=sa;pwd=123"*/
    /*"Driver={sql server};server=192.168.0.7,1433;uid=sa;pwd=123"*/
    hr=hr=m_pConnection->Open(strConnect, L"",L"", adModeUnknown);
    if(FAILED(hr))/*FAILED(hr)代表hr<0*/
    {
        /*打开数据库失败*/
    }
} 
catch(_com_error &e)  
{  
    MessageBox(e.ErrorMessage()); /*打印出异常原因*/
}

连接数据库中Persist Security Info=True这个属性的解释
Persist Security Info属性的意思是表示是否保存安全信息,其实可以简单的理解为”ADO在数据库连接成功后是否保存密码信息”,
True表示保存,False表示不保存
测试环节

数据库连接前

ConnectString="Provider=MSDAORA.1;Password=mypassword;User ID=yzs;Data Source=ydgl22;Persist Security Info=false"

数据库连接成功后

ConnectString="Provider=MSDAORA.1;User ID=yzs;Data Source=ydgl22"

数据库连接前

ConnectString="Provider=MSDAORA.1;Password=mypassword;User ID=yzs;Data Source=ydgl22;Persist Security Info=true"

数据库连接成功后

ConnectString="Provider=MSDAORA.1;Password=mypassword;User ID=dlyx;Data Source=ydgl22"

C++连接问题

  1. IDispatch error #3149异常
    检查数据库是否可以连接,测试方法:
    新建一个.txt文件,重命名为新建文本文档.udl,然后
    检查strConnect字符串是否合法,右击属性–>提供程序,选择如下:
    C++与SQL Server2008连接及配置_第7张图片
    切换到连接,如下:
    C++与SQL Server2008连接及配置_第8张图片
    点击测试连接
  2. 未知错误
    服务没有开启,或者没有按照上面的步骤设置服务器,设置完成后要重启

你可能感兴趣的:(C++)