ADOのITEMプロパティ

原创 2007年09月27日 15:59:00

 

ADOのITEMプロパティ
#import "c://program files//common files//system//ado//msado15.dll" rename("EOF","adoEOF")
using namespace ADODB ;
 
int _tmain(int argc, TCHAR* argv[], TCHAR* envp[])
{
        CoInitialize( NULL ) ;
{
        _bstr_t bstrConnection = _T("Driver={Microsoft Access Driver (*.mdb)};"
        "Dbq=D://Olympus//Capusule//EN//SimulateDB.mdb;Uid=;Pwd=;");
 
        _ConnectionPtr connPtr ;
        connPtr.CreateInstance("ADODB.Connection") ;
        HRESULT hResult = connPtr->Open( bstrConnection , "" , "" ,
                        adConnectUnspecified ) ;
        ASSERT( SUCCEEDED( hResult ) ) ;
 
_CommandPtr cmdPtr ;
        cmdPtr.CreateInstance("ADODB.Command") ;
        cmdPtr->ActiveConnection = connPtr ;
        cmdPtr->CommandText = "select * from patient where id = ? ";                   
   cmdPtr->CommandType = adCmdText ;
        cmdPtr->Prepared = true ;
 
        _ParameterPtr firstParam = cmdPtr->CreateParameter( "1" , adChar ,
                        adParamInput , 10 , "id1" ) ;
        cmdPtr->Parameters->Append( firstParam ) ;
               
        _RecordsetPtr cntRsPtr = cmdPtr->Execute( NULL , NULL , adCmdText ) ;
 
        cntRsPtr->MoveFirst() ;
        while ( !cntRsPtr->adoEOF )
        {
                int nCnt = cntRsPtr->Fields->Count ;
                _variant_t var ;
                _variant_t id ;
                id.vt = VT_INT ;
                id.llVal = 1 ;
 
                FieldPtr idPtr = cntRsPtr->Fields->Item["ID"] ;
                var = idPtr->Value ;
 
                //idPtr = cntRsPtr->Fields->Item[(short)1] ; // ok
                idPtr = cntRsPtr->Fields->Item[(long)1] ;     // ok
               idPtr = cntRsPtr->Fields->Item[(int)1] ;     // fail
               // throw invalid arg errors.
 
                var = idPtr->Value ;
                _variant_t varID = 0 ;
                idPtr = cntRsPtr->Fields->Item["birthday"] ;
                _variant_t birth = idPtr->Value ;
 
                SYSTEMTIME time ;
                VariantTimeToSystemTime( birth.date , &time ) ;
                cntRsPtr->MoveNext() ;
               
                }
}
              CoUninitialize() ;
}
説明:
1、ADOを利用して、DBアクセスする
2、スマートポインタ( smart pointer)を利用して、インタフェース漏れを防ぐ
3、CoUninitializeを呼び出し前に、ADOオブジェクトを解放しなければならない。CoInitializeとCoUninitializeの間に、{}を置いた。そのうちに、オブジェクトのdescructorが発生する
4、コンパイルしたstatementを利用して、効率が高いになる
5、_RecordsetPtrのFieldsのITEMをアクセスするとき、_bstr_tとshort、long二つ種類のIndexが利用できます。注意すべきのはintがindexとして利用できない。何故なから:
The answer is actually simpler. ADO was designed from the beginning to support "higher-level languages", which at the time meant VB/VBA.
In spite of the "Universal" intent of ADO it was essentially designed for VB. That is why practically every value in ADO is a Variant. ADO also manages a bit of parameter polymorphism by checking the type of received variants and performing alternative handling based on it. While VB supports Variants, only a subset of the types available (VarEnum) are included. A system integer, anything unsigned, and many other types are not included, thus throw invalid arg errors.
If you lookup the VarType Function in the VB help files you will see a list
of 'acceptable' values.
6、参考
VARTYPE
An enumeration type used in VARIANT, TYPEDESC, OLE property sets, and safe arrays.
The enumeration constants listed in the following VARENUM section are valid in the vt field of a VARIANT structure.
typedef unsigned short VARTYPE;
enum VARENUM{
    VT_EMPTY           = 0,            // Not specified.
    VT_NULL            = 1,            // Null.
    VT_I2              = 2,            // 2-byte signed int.
    VT_I4              = 3,            // 4-byte signed int.
    VT_R4              = 4,            // 4-byte real.
    VT_R8              = 5,            // 8-byte real.
    VT_CY              = 6,            // Currency.
    VT_DATE            = 7,            // Date.
    VT_BSTR            = 8,            // Binary string.
    VT_DISPATCH        = 9,            // IDispatch
    VT_ERROR           = 10,            // Scodes.
    VT_BOOL            = 11,            // Boolean; True=-1, False=0.
    VT_VARIANT         = 12,            // VARIANT FAR*.
    VT_UNKNOWN        = 13,            // IUnknown FAR*.
    VT_UI1             = 17,            // Unsigned char.
 
    // Other constants that are not valid in VARIANTs omitted here.
 
};
    VT_RESERVED    = (int) 0x8000
    // By reference, a pointer to the data is passed.
    VT_BYREF      = (int) 0x4000   
    VT_ARRAY     = (int) 0x2000    // A safe array of the data is passed.
7、備考
Short                          VT_I2                  2
Long                           VT_I4                  3
Int                              VT_INT               22 ( not included in VBVARENUM)
VCのVARENUM定義にさらに多くのマクロがある
 

エロエロ王国 1.52 汉化补丁 发布

游戏名称: エロティカルナイト 其他名称: 工口工口王国 史上最强大游戏     有名的エロエロ王国今年最新力作,兼顾高潮与好玩的角色扮演RPG,不论是设定、可爱度、游戏性,都是上上之作。...
  • luozhuang
  • luozhuang
  • 2009年12月18日 20:01
  • 38609

Beanのプロパティを出力する<bean:write>

Beanのプロパティを出力するには 、タグを使用します。 タグは、プロパティの出力時にHTMLエンコード処理を実行して、HTML特殊文字をエスケープさせます。 エスケープ文字一覧 ...
  • westkingwy
  • westkingwy
  • 2012年03月13日 22:44
  • 351

[150424]克洛的时钟(クロノクロック)【日文硬盘版】(带全CG存档+日本语启动补丁+日文攻略)

want  static tinypic 前言: 这次的时空穿越是能确切改变未来的哦~也不存在什么绝症晚期的罕见欢乐穿越作?  第一女主的风格能不能改改,连续3作都一个脸(╯‵□′)╯︵┻...
  • wangzi867258173
  • wangzi867258173
  • 2016年01月14日 23:49
  • 3512

練習/言葉

 第一課きょうし(教师)けんきゅうしゃ(研究人员) びょういん(病院) おいくつ(几岁) おなまえは(您贵姓?) しつれいですか(冒昧请教一下)  ~から 来ました(我从~来) イギリス(英国)インド...
  • flight1030
  • flight1030
  • 2008年01月02日 17:34
  • 123

(2011-12-28 旧博文搬运)闪耀十字军(ティンクル☆くるせいだーす)【3】

10月11日 甘んじる 表示安于现状的样子,如:薄給に甘んじる。 薄给就是很少的工资 及ばず乍ら【オヨバズナガラ】(nagara原来写成"乍"啊..) [副]十分にはいかないが。人の手...
  • yyf1990cs
  • yyf1990cs
  • 2016年04月09日 02:47
  • 158

Inputman コントロールのプロパーティを設置

 Inputman コントロールのプロパーティ 1.GrapeCity.Win.Input.Editコントロール① Modifiers   Modifiers プロパティは、そのメンバ変数に割り当てる...
  • senmon2004
  • senmon2004
  • 2007年06月25日 21:58
  • 7137

ADFのvalue binding はマネージドBeanのプロパティと連携

                                             ADFのvalue binding はマネージドBeanのプロパティと連携① Beanのプロパティの型がStr...
  • senmon2004
  • senmon2004
  • 2008年07月12日 20:57
  • 754

在windows遇到的 ORA-00824 以及影响的范围

1 先说一下我的环境:     1-1 windows 2003 server     1-2 oracle 10.2.0     1-3 有两个db service (即创建了两个数据库实例)...
  • xys_777
  • xys_777
  • 2012年01月18日 15:05
  • 1569

网络应用的魅力

一幅图看到网络应用的魅力 点击进入网址: ホネホネ・クロック [時計・ブログパーツ] http://chabudai.org/blog/?p=59 源代码如下...
  • a771795183
  • a771795183
  • 2014年04月03日 11:45
  • 594

AtCoder Tasks B インタラクティブ練習 (Interactive Sorting)

优化插入法解决交互排序问题
  • m0_37711725
  • m0_37711725
  • 2017年06月10日 01:33
  • 896
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:ADOのITEMプロパティ
举报原因:
原因补充:

(最多只允许输入30个字)