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的问题
- 已成功与服务器建立连接,但是在登录过程中发生错取。(provider:共享内存提供程序,error:0-管道的另一端上无任何进程。)(Microsoft SQL Server,错误:233)
解决方法:打开程序-所有程序-Microsoft SQL Server 2005-配置工具-SQL Server 配置管理器,在弹出的窗体中,找到SQL Server 2005 网络配置,把MSSQLSERVER的协议下的Named Pipes和TCP/IP启动,然后重新启动Microsoft SQL Server 2005就可以了。 -
SQL Server 配置管理器中远程过程调用失败。[0x800706be]解决方案
电脑上安装了两个版本的SQL server,卸载另个SQL server版本
C++操作SQL Server2008
连接数据库
- 加载.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路径是否设置正确*/
- 连接数据库
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++连接问题
-
IDispatch error #3149异常
检查数据库是否可以连接,测试方法:
新建一个.txt文件,重命名为新建文本文档.udl,然后
检查strConnect字符串是否合法,右击属性–>提供程序,选择如下:
切换到连接,如下:
点击测试连接 - 未知错误
服务没有开启,或者没有按照上面的步骤设置服务器,设置完成后要重启