新聞中心
隨著互聯(lián)網(wǎng)技術(shù)的不斷發(fā)展,越來(lái)越多的應(yīng)用程序需要連接遠(yuǎn)程數(shù)據(jù)庫(kù)來(lái)獲取數(shù)據(jù),以便滿足用戶的需求。ADO(ActiveX Data Objects)是一種面向?qū)ο蟮臄?shù)據(jù)庫(kù)連接技術(shù),可以用來(lái)連接各種類(lèi)型的數(shù)據(jù)庫(kù)。本文將介紹利用ADO實(shí)現(xiàn)遠(yuǎn)程數(shù)據(jù)庫(kù)連接的技巧。

成都創(chuàng)新互聯(lián)從2013年開(kāi)始,是專(zhuān)業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項(xiàng)目成都做網(wǎng)站、網(wǎng)站設(shè)計(jì)、外貿(mào)營(yíng)銷(xiāo)網(wǎng)站建設(shè)網(wǎng)站策劃,項(xiàng)目實(shí)施與項(xiàng)目整合能力。我們以讓每一個(gè)夢(mèng)想脫穎而出為使命,1280元烏爾禾做網(wǎng)站,已為上家服務(wù),為烏爾禾各地企業(yè)和個(gè)人服務(wù),聯(lián)系電話:13518219792
一、安裝ADO
在使用ADO之前,需要先安裝ADO。ADO是一個(gè)Microsoft Windows組件,通常安裝在系統(tǒng)的“C:\Program Files\Common Files\System\ado”目錄下。如果系統(tǒng)中沒(méi)有ADO,可以在Microsoft官網(wǎng)下載并手動(dòng)安裝。
二、連接遠(yuǎn)程數(shù)據(jù)庫(kù)
在ADO中,需要使用Connection對(duì)象來(lái)連接數(shù)據(jù)庫(kù),使用Recordset對(duì)象來(lái)獲取和處理數(shù)據(jù)。
連接遠(yuǎn)程數(shù)據(jù)庫(kù)的基本格式:
“`
Set conn = Server.CreateObject(“ADODB.Connection”)
conn.Open “Provider=SQLOLEDB; Data Source=RemoteServerName; Initial Catalog=DatabaseName; User Id=UserName; Password=Password;”
“`
其中,RemoteServerName是遠(yuǎn)程服務(wù)器名,DatabaseName是要連接的數(shù)據(jù)庫(kù)名,UserName和Password是連接遠(yuǎn)程數(shù)據(jù)庫(kù)所需的用戶名和密碼。
需要注意的是,如果遠(yuǎn)程數(shù)據(jù)庫(kù)使用的是SQL Server,需要將Provider設(shè)置為SQLOLEDB。如果使用的是Access數(shù)據(jù)庫(kù),則將Provider設(shè)置為Microsoft.Jet.OLEDB.4.0。
三、處理遠(yuǎn)程數(shù)據(jù)
連接上遠(yuǎn)程數(shù)據(jù)庫(kù)后,就可以使用Recordset對(duì)象來(lái)獲取和處理數(shù)據(jù)了。Recordset對(duì)象是ADO中的一個(gè)重要對(duì)象,用于存儲(chǔ)從數(shù)據(jù)庫(kù)中讀取的數(shù)據(jù)。
從遠(yuǎn)程數(shù)據(jù)庫(kù)中獲取數(shù)據(jù)的基本格式:
“`
Set rs = Server.CreateObject(“ADODB.Recordset”)
rs.Open “SELECT * FROM TableName”, conn
“`
其中,TableName是要查詢的表名,conn是連接遠(yuǎn)程數(shù)據(jù)庫(kù)所使用的Connection對(duì)象。
有時(shí)候需要使用參數(shù)進(jìn)行查詢,例如查詢一個(gè)指定ID的記錄:
“`
Set cmd = Server.CreateObject(“ADODB.Command”)
cmd.ActiveConnection = conn
cmd.CommandType = adCmdText
cmd.CommandText = “SELECT * FROM TableName WHERE ID = ?”
Set param = cmd.CreateParameter(“ID”, adInteger, adParamInput)
param.Value = 123
cmd.Parameters.Append param
Set rs = cmd.Execute
“`
其中,adCmdText是CommandType屬性的一個(gè)值,表示要執(zhí)行的SQL語(yǔ)句類(lèi)型為文本;adInteger是數(shù)據(jù)類(lèi)型,表示參數(shù)的數(shù)據(jù)類(lèi)型為整數(shù);adParamInput是參數(shù)類(lèi)型,表示參數(shù)是輸入?yún)?shù)。在上面的例子中,將參數(shù)ID的值設(shè)置為123,然后執(zhí)行查詢。
四、關(guān)閉數(shù)據(jù)庫(kù)連接
在使用完連接對(duì)象和記錄集對(duì)象之后,需要優(yōu)化代碼并關(guān)閉數(shù)據(jù)庫(kù)連接,以釋放系統(tǒng)資源:
“`
rs.Close
Set rs = Nothing
conn.Close
Set conn = Nothing
“`
五、使用Try Catch處理異常
在實(shí)際開(kāi)發(fā)中,有時(shí)候會(huì)出現(xiàn)連接遠(yuǎn)程數(shù)據(jù)庫(kù)失敗的情況。為了使程序更加健壯,建議使用Try Catch語(yǔ)句處理異常。
“`
On Error Resume Next
Set conn = Server.CreateObject(“ADODB.Connection”)
conn.Open “Provider=SQLOLEDB; Data Source=RemoteServerName; Initial Catalog=DatabaseName; User Id=UserName; Password=Password;”
If Err.Number 0 Then
Response.Write “連接遠(yuǎn)程數(shù)據(jù)庫(kù)出錯(cuò)!”
Else
Response.Write “連接遠(yuǎn)程數(shù)據(jù)庫(kù)成功!”
End If
Err.Clear
On Error Goto 0
“`
在上面的例子中,使用On Error Resume Next語(yǔ)句將錯(cuò)誤處理方式設(shè)置為繼續(xù)執(zhí)行代碼,并不中斷程序。如果連接遠(yuǎn)程數(shù)據(jù)庫(kù)失敗,則通過(guò)Err.Number獲取錯(cuò)誤代碼,然后清除錯(cuò)誤信息,將錯(cuò)誤處理方式恢復(fù)為默認(rèn)值,使程序可以繼續(xù)運(yùn)行下去。
【注意事項(xiàng)】
1.在連接數(shù)據(jù)庫(kù)的過(guò)程中,需要保證用戶名和密碼的正確性,否則會(huì)出現(xiàn)連接失敗的情況。
2.在使用完連接對(duì)象和記錄集對(duì)象之后,需要關(guān)閉服務(wù)器上的數(shù)據(jù)庫(kù)連接。
3.為了使程序更加健壯,建議使用Try Catch語(yǔ)句處理異常。
4.為了提高程序的可讀性和可維護(hù)性,建議使用函數(shù)和變量來(lái)封裝數(shù)據(jù)庫(kù)連接代碼。
利用ADO實(shí)現(xiàn)遠(yuǎn)程數(shù)據(jù)庫(kù)連接是非常重要的技能,在實(shí)際開(kāi)發(fā)中經(jīng)常遇到。本文介紹了利用ADO連接遠(yuǎn)程數(shù)據(jù)庫(kù)的技巧,包括連接遠(yuǎn)程數(shù)據(jù)庫(kù)、處理遠(yuǎn)程數(shù)據(jù)、關(guān)閉數(shù)據(jù)庫(kù)連接和使用Try Catch處理異常等方面。熟練運(yùn)用這些技巧,可以大大提高開(kāi)發(fā)效率,提高代碼質(zhì)量。
相關(guān)問(wèn)題拓展閱讀:
- VB用ADO連接遠(yuǎn)程ACCESS數(shù)據(jù)庫(kù),怎么在VB里面設(shè)置遠(yuǎn)程機(jī)器的賬號(hào)密碼,遠(yuǎn)程放ACCESS文件的文件夾已共享
- vb用ado控件連接數(shù)據(jù)庫(kù)
- 用ADO怎么連接Access數(shù)據(jù)庫(kù)?
VB用ADO連接遠(yuǎn)程ACCESS數(shù)據(jù)庫(kù),怎么在VB里面設(shè)置遠(yuǎn)程機(jī)器的賬號(hào)密碼,遠(yuǎn)程放ACCESS文件的文件夾已共享
Adodc1.ConnectionString = “Provider=Microsoft.Jet.OLEDB.4.0;Data Source=\\” & _
遠(yuǎn)程計(jì)埋悄陸算機(jī)名 & “\共運(yùn)帆享彎頃文件夾名\數(shù)據(jù)庫(kù)文件名.mdb;Persist Security Info=False”
OK啦!
不需要在連接字符串中設(shè)置遠(yuǎn)程機(jī)器的賬戶密碼。但是你這臺(tái)電腦要訪螞羨問(wèn)一下遠(yuǎn)程電腦,只要一次訪問(wèn)成塌就可以了。團(tuán)物信
要訪問(wèn)一下遠(yuǎn)程電腦,只要一次訪問(wèn)成功就可以了。
sdfgsdf
vb用ado控件連接數(shù)據(jù)庫(kù)
vb用ado控件缺舉連接數(shù)據(jù)庫(kù)分為兩種情況,一個(gè)是Access數(shù)據(jù)庫(kù),一個(gè)是SQL server數(shù)據(jù)庫(kù)。
1)敏頌Access數(shù)據(jù)庫(kù)的代碼是
2)SQL server數(shù)據(jù)庫(kù)的代碼是
正確添加了ADO控件后,設(shè)置ADO控件的Connectionstring屬性,它指出了ADO控件和數(shù)據(jù)早梁信庫(kù)連接的字符串,打開(kāi)這個(gè)屬性的渣鎮(zhèn)屬性頁(yè),可以通過(guò)三種方式設(shè)置連接方式,常設(shè)置為OLEDB方式:
Connectionstring=”P(pán)rovider=Microsoft.Jet.OLEDB.4.0;Data Source=你的數(shù)據(jù)庫(kù)路徑”
然后設(shè)置RecordSource屬性指出可以操作的數(shù)據(jù)庫(kù)的來(lái)源(即結(jié)果字符串,可以是陸輪SQL查詢產(chǎn)生的).
在設(shè)置好后,可以用文本框(textbox)等綁定數(shù)據(jù)表中的字段進(jìn)行顯示.
用ADO怎么連接Access數(shù)據(jù)庫(kù)?
要自己創(chuàng)建這個(gè)類(lèi)(關(guān)于握穗喚ADO的類(lèi))
可以參考如下代碼族大:
ADOConn::ADOConn()
{
}
ADOConn::~ADOConn()
{
}
void ADOConn::OnInitADOConn()
{
::CoInitialize(NULL);
try
{
m_pConnection.CreateInstance(“ADODB.Connection”);
_bstr_t strConnect=”uid=;pwd=;DRIVER={Microsoft Access Driver (*.mdb)};DBQ=AddressBook.mdb;”;//這段就是段凱連接Access數(shù)據(jù)庫(kù)
m_pConnection->Open(strConnect,””,””,adModeUnknown);
}
catch(_com_error e)
{
AfxMessageBox(e.Description());
}
}
_RecordsetPtr& ADOConn::GetRecordSet(_bstr_t bstrSQL)
{
try
{
if(m_pConnection==NULL)
OnInitADOConn();
m_pRecordset.CreateInstance(__uuidof(Recordset));
m_pRecordset->Open(bstrSQL,m_pConnection.GetInterfacePtr(),adOpenDynamic,adLockOptimistic,adCmdText);
}
catch(_com_error e)
{
e.Description();
}
return m_pRecordset;
}
BOOL ADOConn::ExecuteSQL(_bstr_t bstrSQL)
{
_variant_t RecordsAffected;
try
{
if(m_pConnection==NULL)
OnInitADOConn();
m_pConnection->Execute(bstrSQL,NULL,adCmdText);
return true;
}
catch(_com_error e)
{
e.Description();
return false;
}
}
void ADOConn::ExitConnect()
{
if(m_pRecordset!=NULL)
m_pRecordset->Close();
m_pConnection->Close();
}
步驟如下:
一、用有源ODBC DSN的方法和無(wú)源OLE DB的方法連接數(shù)據(jù)庫(kù):
1、無(wú)源OLE DB:
string strConn=”P(pán)rovider=Microsoft.Jet.OLEDB.4.0 ;Data Source=intels.mdb” ;
2、有源臘敬ODBC DSN:
string strConn=”Data Source=intels”;
如果采用ADO.NET連接SQL Server或者Oracle,方法和VB中連尺搏接相應(yīng)數(shù)據(jù)陵局祥的連接字符串一致。
二、開(kāi)始連接數(shù)據(jù)庫(kù):
ADOConnection Conn = new ADOConnection(strConn);
三、執(zhí)行一個(gè)select SQL 查詢:
string strSQL = “Select id from test” ;
ADOCommand ADOCmd=new ADOCommand(conn,Conn);
Conn.Open();
ADODataReader reader;
ADOCmd.Execute(out reader);
四、得到ADODataReader中包含的數(shù)據(jù):
先執(zhí)行:
reader.Read();
然后就可以取得數(shù)值:
reader.ToString();
依次類(lèi)推。
五、delete(刪除)語(yǔ)句,insert和update相同:
strSQL=”delete from test where id=’1’”;
//strSQL=”insert into test values(’1’)”;
//strSQL=”update test set id=’1’”;
ADOCommand ADOCmd=new ADOCommand(conn,Conn);
Conn.Open();
ADOCmd.Execute();
_ConnectionPtr m_pConnection;
CoInitialize(NULL);
m_pConnection.CreateInstance(__uuidof(Connection));
// 在ADO操作中建議語(yǔ)句中要常用try…catch()來(lái)捕獲錯(cuò)誤信息,
// 因?yàn)樗袝r(shí)會(huì)經(jīng)常出現(xiàn)一些想耐灶不到的錯(cuò)誤。
try
{
// 打開(kāi)本地Access庫(kù)db1.mdb
m_pConnection->Open(“Provider=Microsoft.Jet.OLEDB.4.0;Data Source=db1.mdb”,””,””,adModeUnknown);
}
catch(_com_error e)
{
coutOpen(“SELECT * FROM Home2”,
m_pConnection.GetInterfacePtr(), // 獲取庫(kù)接庫(kù)的IDispatch指針
adOpenDynamic,
adLockOptimistic,
adCmdText);
}
catch(_com_error *e)
{
//AfxMessageBox(e->ErrorMessage());
coutErrorMessage()BOF)
m_pRecordset->MoveFirst();
else
{
coutadoEOF)
{
var = m_pRecordset->GetCollect(“ID”);
if(var.vt != VT_NULL)
strID= _com_util::ConvertBSTRToString((_bstr_t)var); //_variant_t轉(zhuǎn)字遲畝旦符串
var = m_pRecordset->GetCollect(“X”);
if(var.vt != VT_NULL)
strX=_com_util::ConvertBSTRToString((_bstr_t)var);
var = m_pRecordset->GetCollect(“Y”);
if(var.vt != VT_NULL)
strY=_com_util::ConvertBSTRToString((_bstr_t)var);
coutMoveNext();
}
}
catch(_com_error *e)
{
coutErrorMessage()Close();
m_pRecordset = NULL;
//–
//關(guān)閉數(shù)據(jù)庫(kù)連接
//–
if(m_pConnection->State)
m_pConnection->Close();
m_pConnection= NULL;
CSize本身屬于無(wú)量綱的單帶則位,不存在換算問(wèn)題。
你上面獲得的Size,本身單位就是像素。
不過(guò)CreateFont函數(shù)本身w并不能精確控制知行塌創(chuàng)建的字體,頂多創(chuàng)建一個(gè)接近你的要求的字體。
如果你的搭圓字體比例太奇怪,CreateFont是做不到和你要求一樣的。
關(guān)于ado 連接遠(yuǎn)程數(shù)據(jù)庫(kù)連接的介紹到此就結(jié)束了,不知道你從中找到你需要的信息了嗎 ?如果你還想了解更多這方面的信息,記得收藏關(guān)注本站。
創(chuàng)新互聯(lián)服務(wù)器托管擁有成都T3+級(jí)標(biāo)準(zhǔn)機(jī)房資源,具備完善的安防設(shè)施、三線及BGP網(wǎng)絡(luò)接入帶寬達(dá)10T,機(jī)柜接入千兆交換機(jī),能夠有效保證服務(wù)器托管業(yè)務(wù)安全、可靠、穩(wěn)定、高效運(yùn)行;創(chuàng)新互聯(lián)專(zhuān)注于成都服務(wù)器托管租用十余年,得到成都等地區(qū)行業(yè)客戶的一致認(rèn)可。
本文標(biāo)題:利用ADO實(shí)現(xiàn)遠(yuǎn)程數(shù)據(jù)庫(kù)連接技巧(ado連接遠(yuǎn)程數(shù)據(jù)庫(kù)連接)
本文來(lái)源:http://www.dlmjj.cn/article/djedpjh.html


咨詢
建站咨詢
