数据库学习起步

刚开始学习数据库编程,先从ADO来吧,也从最基本的来吧,希望CSDN能记下我学习的全过程,也希望CSDN能给我个动力和监督的效果,我会坚持学好,也会坚持写BLOG。

 使用ADO前先要把ADO的库包含进来,#import "c:/Program Files/Common Files/System/ADO/msado15.dll" no_namespace rename ( "EOF", "adoEOF" ),把这个库包含进来后,编译程序会生成两个文件msado15.tlh和msado15.tli这两个文件包含了我们要调用ADO函数,需要注意的是这个预编译命令需要放在所有#include之后,否则会出现编译错误,至于为什么这样,哈哈,还没搞清楚。

除了要把ADO的库包含进来,还要包含头文件#include <icrsint.h>,这个文件定义了ADO需要用到的变量。

好,前期工作完成后,现在进入ADO吧:

ADO主要包含三个对象:Connection、Recordset和Command,很显然,Connection当然是数据库连接,Recordset是数据记录集,Command是命令对象。

好先看下我写的简单程序吧

//首先调用OleDB的初始化函数CoInitialize(NULL);,否则创建Ado对象可能会失败;

CoInitialize(NULL);
  _ConnectionPtr pMyConnect = NULL;

//初始化connection对象,现在不懂的是pMyConnect.CreateInstance( uuidof ( Connection ) );为什么会有时失败
//还没搞懂,暂时只会用下面这样初始化Connection了
 HRESULT hr = pMyConnect.CreateInstance( "ADODB.Connection" );
 if ( FAILED ( hr ) )
 {
  ::MessageBox ( NULL, "连接初始化失败", "警告", MB_OK | MB_ICONASTERISK );
  return 0;
 }

//设置连接字符串

 _bstr_t strConnect = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source= f://test.mdb";
 
 try
 {
  pMyConnect->Open( strConnect, "", "", NULL );
 }
 catch ( _com_error &e )
 {
  ::MessageBox ( NULL, e.Description(), "警告", MB_OK | MB_ICONASTERISK );
 }

//使用记录集前也要初始化
 _RecordsetPtr pMyRecordSet;
 if ( FAILED ( pMyRecordSet.CreateInstance( __uuidof(Recordset) ) ) )
 {
  ::MessageBox ( NULL, "记录初始化失败", "警告", MB_OK | MB_ICONASTERISK );
  return 0;
 }
 try
 {

//参数里具体每个变量是干什么用的,暂时还没搞清楚
  pMyRecordSet->Open( _variant_t ( "testTable "),
                   _variant_t ( (IDispatch *) pMyConnect, true ),
                   adOpenKeyset,
                   adLockOptimistic,
                   adCmdTable );
 }
 catch ( _com_error &e )
 {
  ::MessageBox ( NULL, "无法打开表testTable", "警告", MB_OK | MB_ICONASTERISK );
 }

 pMyRecordSet->MoveFirst();
 try
 {
  while ( pMyRecordSet->adoEOF == VARIANT_FALSE )
  {
   pMyRecordSet->Fields->GetItem( _variant_t ( "name" ) )->Value = ( _bstr_t )( "某某" );
   int id = ( long )( pMyRecordSet->Fields->GetItem( _variant_t ( "id" ) )->Value );
   pMyRecordSet->Update();
   pMyRecordSet->MoveNext();
  }
 }
 catch ( _com_error &e )
 {
  ::MessageBox ( NULL, e.Description(), "警告", MB_OK | MB_ICONASTERISK );
 }

 try
 {
  if ( !pMyRecordSet->Supports( adAddNew ) )
  {
   ::MessageBox ( NULL, "不支持添加记录", "警告", MB_OK | MB_ICONASTERISK );
   return 0;
  }

//添加记录
  pMyRecordSet->AddNew();
  pMyRecordSet->Fields->GetItem( _variant_t ( "id" ) )->Value = _variant_t ( ( long )3 );
  pMyRecordSet->Fields->GetItem( _variant_t ( "name" ) )->Value = _bstr_t ( "某某" );
  pMyRecordSet->Update();
 }
 catch ( _com_error &e )
 {
  ::MessageBox ( NULL, e.Description(), "警告", MB_OK | MB_ICONASTERISK );
 }

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值