C++与SQL Server2008连接及配置

SQL Server2008配置

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

然后切换到如下界面:
这里写图片描述
在这个界面中启动右侧中SQL Server(MSSQLSERVER)这个选项(如果是启动状态,配置了如上中的界面,就需要重新启动)
2. 在开始菜单–>Microsoft SQL Server 2008 R2–>SQL Server Management Studio,打开SQL Server Management Studio软件登陆数据库如下图所示:
这里写图片描述
配置账户sa
点击连接进入数据库管理界面,,在数据库中已经默认创建了一个登陆名(sa), 右击登陆名下的sa–>属性,进入如下界面
这里写图片描述
在这个界面(常规)中设置密码(密码确认密码是以后用sa登陆数据库的密码),切换到状态界面中,如下图设置
这里写图片描述
如果禁用拒绝,C++连接就会出现异常
配置数据库安全性连接配置
配置数据库的安全性,右击数据库服务(根目录)–>属性–>安全性,如下图配置:
这里写图片描述
服务器身份验证一定要选择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字符串是否合法,右击属性–>提供程序,选择如下:
    这里写图片描述
    切换到连接,如下:
    这里写图片描述
    点击测试连接
  2. 未知错误
    服务没有开启,或者没有按照上面的步骤设置服务器,设置完成后要重启
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值