OCILIB 连接Oracle数据库——注意事项

1、注意

  • 1、对于 ANSI ocilib::ostring 相当于 std::string
    对于 UNICODE ocilib::ostring 相当于 std::wstring
  • 2、对于文本,添加时需要指出数据长度
    st.Bind<ostring,int>(MT(":text"),ostr,50,BindInfo::InOut)
  • 3、对于日期,可以由字符串转化,如: ocilib::Date date("2017-09-21")
    或对其赋值:
    ocilib::Date date(true);//参数,true创建日期对象。默认为false。
    date.SetDate(2017,9,21);
    
  • 4、对于 LOB 格式,如BLOB、CLOB等。以BLOB为例,需要创建一个ocilib::Blob 对象,代码中是这样定义的:
     typedef Lob<Raw, LobBinary> Blob;
     typedef std::vector<unsigned char> Raw;
    可以看出其中存放的是std::vector<BYTE>,所以就可以通过以下方法写入:
    
    //参数 void* pBuff 、 UINT length 、 Blob blob
    vector<BYTE> list;
    for (int i=0;i<(int)length;i++)
      list.push_back(pBuff[i]);
    blob.Write(list);
    

    2、常见错误