程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> C++與SQLServer2008連接及配置

C++與SQLServer2008連接及配置

編輯:C++入門知識

C++與SQLServer2008連接及配置


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 PipesTCP/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字符串是否合法,右擊屬性–>提供程序,選擇如下:
這裡寫圖片描述
切換到連接<喎?http://www.Bkjia.com/kf/ware/vc/" target="_blank" class="keylink">vc3Ryb25nPqOsyOfPwqO6PGJyIC8+DQo8aW1nIGFsdD0="這裡寫圖片描述" src="http://www.bkjia.com/uploads/allimg/160414/0446233114-7.png" title="" />
點擊測試連接 未知錯誤
服務沒有開啟,或者沒有按照上面的步驟設置服務器,設置完成後要重啟

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved