安裝完成後需要確保SQL Server服務啟動,啟動的步驟如下:
1. 在開始菜單–>Microsoft SQL Server 2008 R2–>配置工具–>sql server 配置管理器,打開配置管理器,切換到如下界面
在這個界面中啟動如圖中的服務,啟動方法:右擊–>啟動<喎?/kf/ware/vc/" target="_blank" class="keylink">vc3Ryb25nPjxiciAvPg0KPHN0cm9uZz7I57n7x9C7u7+qxvTTw7unzqqxvrXYtefE1NXLu6ejrNTy0OjSqrG+tdi158TU1cu7p8no1sPD3MLro6y38dTyu+HM4cq+tO3O8zwvc3Ryb25nPjwvcD4NCjxwPsi7uvPH0Lu7tb3I58/CvefD5jo8YnIgLz4NCjxpbWcgYWx0PQ=="這裡寫圖片描述" src="/uploadfile/Collfiles/20160411/20160411143454335.png" title="\" />
在這個界面中啟動右側中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這個用戶名登陸不上,會出現提示未知錯誤
在連接選項卡中,勾選允許連接到此服務器,不然連接數據庫失敗
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字符串是否合法,右擊屬性–>提供程序,選擇如下:
切換到連接,如下:
點擊測試連接 未知錯誤
服務沒有開啟,或者沒有按照上面的步驟設置服務器,設置完成後要重啟