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

1、注意

  • 1、对于ANSIocilib::ostring相当于std::string
    对于UNICODEocilib::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、常见错误

错误描述 错误原因
ORA-01747: user.table.column, table.column 或列说明无效 关键字
ORA-01830: 日期格式图片在转换整个输入字符串之前结束的解决办法 oracle的日期时间格式
ORA-00911: 无效字符 结尾分号
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容