VC++连接远程Oracle数据库
1.如果主機(jī)A要連接遠(yuǎn)程主機(jī)B的oracle數(shù)據(jù)庫(kù),那么主機(jī)A和主機(jī)B都要安裝oracle數(shù)據(jù)庫(kù),否則會(huì)提示找不到安裝程序異常(或者主機(jī)A安裝oralce客戶端程序),主機(jī)B要配置數(shù)據(jù)庫(kù)本地網(wǎng)絡(luò)服務(wù)名和監(jiān)聽(tīng)程序,用于對(duì)外網(wǎng)絡(luò)開(kāi)放本地?cái)?shù)據(jù)庫(kù)網(wǎng)絡(luò)服務(wù)和監(jiān)聽(tīng)遠(yuǎn)程程序通過(guò)網(wǎng)絡(luò)連接本地?cái)?shù)據(jù)庫(kù)。
2.oracle數(shù)據(jù)庫(kù)中用到的3個(gè)配置程序:Database Configuration Assistant 用于配置oracle數(shù)據(jù)庫(kù),如果安裝過(guò)程中數(shù)據(jù)庫(kù)配置或者安裝出錯(cuò),可以直接刪除數(shù)據(jù)庫(kù)重新配置不用卸載軟件重新安裝;Net Configuration Assistant用于配置本機(jī)數(shù)據(jù)庫(kù)網(wǎng)絡(luò)監(jiān)聽(tīng)程序和數(shù)據(jù)庫(kù)網(wǎng)絡(luò)服務(wù)名,如果連接提示無(wú)法識(shí)別提供的sid等錯(cuò)誤,可以直接刪除監(jiān)聽(tīng)程序重新配置并同時(shí)刪除本地網(wǎng)絡(luò)服務(wù)名重新配置;Net Manager用于查看Net Configuration Assistant中配置的本地網(wǎng)絡(luò)服務(wù)名和監(jiān)聽(tīng)程序;1個(gè)數(shù)據(jù)庫(kù)連接與操作程序:SQL Plus用于連接數(shù)據(jù)并實(shí)現(xiàn)數(shù)據(jù)系統(tǒng)配置與數(shù)據(jù)操作。
3.常用命名:cmd中輸入lsnrctl status用于查看當(dāng)前數(shù)據(jù)庫(kù)網(wǎng)絡(luò)服務(wù)與監(jiān)聽(tīng)程序狀態(tài),如果聽(tīng)見(jiàn)程序?yàn)锽LOCKED狀態(tài)則遠(yuǎn)程無(wú)法連接,正常為READY狀態(tài);如果連接不上遠(yuǎn)程數(shù)據(jù)庫(kù),可以通過(guò)此命令查看服務(wù)是否開(kāi)啟;oracle數(shù)據(jù)庫(kù)插入時(shí)間日期,使用to_date('2013-07-05 23:56:25’, 'yyyy-mm-dd hh24:mi:ss’),設(shè)置系統(tǒng)時(shí)間日期顯示格式:alter session set nls_date_format=‘yyyy-mm-dd hh24:mi:ss’。
4.oracle 11g標(biāo)準(zhǔn)版vc++連接字符串:
strConnect.Format("Provider=OraOLEDB.Oracle.1;Password=%s;Persist Security Info=True;User ID=%s;\
?Data Source=\"(DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST = %s)(PORT = %s)) )(CONNECT_DATA = (SID = %s)))\"",
?m_sPwd, m_sUid, m_sHost, m_sPort, m_sSid);//123456 system 192.168.37,1521(默認(rèn)端口),testdata(本地網(wǎng)絡(luò)服務(wù)配置服務(wù)名)
?try
?{
??::CoInitialize(NULL);//初始化com環(huán)境(必須,否則提示異常)
??m_pConnection.CreateInstance(__uuidof(Connection));
??m_pConnection->ConnectionTimeout = 10;// 設(shè)置連接超時(shí)10秒
??m_pConnection->Open(_bstr_t(LPCTSTR(strConnect)),"","",adModeUnknown);
??m_pConnection->CursorLocation = adUseClient;//設(shè)置使用客戶端連接(可以共享讀寫(xiě))
?}
?catch (_com_error e)
?{
??AfxMessageBox(e.Description());?
??//AfxMessageBox(e.ErrorMessage());
??return FALSE;
?}
?catch(...)
?{
??MessageBox("數(shù)據(jù)庫(kù)連接失敗!", "未知原因", MB_OK|MB_ICONERROR);?
??return FALSE;
?}
?
?
總結(jié)
以上是生活随笔為你收集整理的VC++连接远程Oracle数据库的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: GetCurrentDirectory(
- 下一篇: s3c2440移植MQTT