ADO操作数据库的方法总结

来源:互联网 发布:1112赛季nba季后赛数据 编辑:程序博客网 时间:2024/05/18 22:42

1、引入类库

#pragma warning(disable:4146)

#import"msado15.dll" no_namespace rename ("EOF", "adoEOF"), rename("BOF","adoBOF")

#import "MSJRO.DLL" no_namespace

using namespace ADODB;

#pragma warning(default:4146)

2、创建数据连接对象、打开连接

 ::CoInitialize(NULL);

 try

 {

  m_pConnection.CreateInstance("ADODB.Connection");

  _bstr_t strConnect="Provider=SQLOLEDB.1;Password=pwd;Persist Security Info=True;User ID=user_id;Initial Catalog=db_name;Data Source=server_ip";

  m_pConnection->Open(strConnect,"","",adModeUnknown);

 }

 catch(_com_error e)

{}

以下就不加异常处理了,具体可以自己加上去。

3、打开记录集

  m_pRecordset.CreateInstance(__uuidof(Recordset));

  m_pRecordset->Open(SQL语句,m_pConnection.GetInterfacePtr(),adOpenDynamic,adLockOptimistic,adCmdText);

4、执行SQL查询语句

m_pConnection->Execute(SQL语句,NULL,adCmdText);

当然也可以用COMMAND对象来执行查询,二者的区别大概就是:

COMMAND对象可以操作存贮过程,并取得其返回值

CONNECTION对象可以操作存储过程,但不能取得返回值

具体用法请查询详细资料。

5、用完了要记得,关闭记录集、连接、释放COM

m_pRecordset->Close();

m_pConnection->Close();

 ::CoUninitialize();

以下记录ADO使用过程中常见的方法,供参考:

1、读数据库中的二进制数据

long lDataSize = m_adoRecordSet.GetFields()->GetItem("声音")->ActualSize;

if(lDataSize > 0)

{

_variant_t varBLOB;

varBLOB = m_adoRecordSet.GetFields()->GetItem("声音")->GetChunk(lDataSize);

if(varBLOB.vt == (VT_ARRAY | VT_UI1)) 

{

char *pBuf = NULL;

SafeArrayAccessData(varBLOB.parray,(void **)&pBuf);

sndPlaySound(pBuf, SND_MEMORY | SND_SYNC | SND_NODEFAULT );//播放声音

SafeArrayUnaccessData(varBLOB.parray);//注意这句不能少的

}

}

2、读写时间值

COleDateTime oleDate = COleDateTime::GetCurrentTime();

_variant_t vtFld;

vtFld.vt = VT_DATE;

vtFld.date = oleDate;

pRecordSet->PutCollect("出生年月", vtFld);

读时间值

_bstr_t TheValue=m_pset->Fields->GetItem("出生年月")->Value;

temp=(char *)TheValue;

COleVariant vtime(temp);

vtime.ChangeType(VT_DATE);

COleDateTime time=vtime;

3、压缩ACCESS数据库

try

{

IJetEnginePtr jet(__uuidof(JetEngine));

jet->CompactDatabase( "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=d:nwind2.mdb;Jet OLEDB:Database Password=test", 

"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=d:abbc.mdb;" 

"Jet OLEDB:Engine Type=4;Jet OLEDB:Database Password=test");

}

catch(_com_error &e) 

::MessageBox(NULL, (LPCTSTR)e.Description( ), "", MB_OK) ; 

}

(未完待续)

参考文章链接:

http://blog.chinaunix.net/u2/68138/showart_661828.html

http://www.ms-news.net/f3291/compact-database-run-time-2536918.html

http://blog.csdn.net/itmes/archive/2010/01/19/5212033.aspx

http://blog.csdn.net/AMWIHIHC/archive/2009/05/14/4180633.aspx