1)OTL连接数据库的字符串:
system/admin@(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.10.195)(PORT=1521)))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=orcl)))
2)ORACLE已经在DATE数据类型上扩展出来了TIMESTAMP数据类型,它包括了所有DATE数据类型的年月日时分秒的信息,而且包括了小数秒的信息
oracle数据库的timestamp的存储精度为6位,即微秒级
针对date和timestamp需要通过转换成字符串的方式才能通过otl获取到
select dev_no, longitude, latitude, to_char(t.date_time, 'yyyy-mm-dd hh24:mi:ss')
from typppbd.view_pdt_trace t
where t.date_time > sysdate + numtodsinterval(-7200, 'second')
order by t.date_time asc
date转换成字符串:2020-11-14 17:18:48
select GPS_NO, LATITUDE, LONGITUDE, to_char(REPORT_TIME, 'yyyy-mm-dd hh24:mi:ss.ff6'), ONLINE_STATUS
from big.t_MAG_GPS_JC_INFO
timestamp转换成字符串:2020-11-14 17:18:48.761000
3)Oracle 密码包含特殊字符OTL访问的解决方案
需求 用户名:zhzx,密码:zhzx@2020,通过OTL C++组件访问,构建连接字符串:zhzx/zhzx@2020@(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.10.10)(PORT=1521)))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=orcl)))
提示错误:ORA-12154: TNS: 无法解析指定的连接标识符
解决方案:密码中的@前面添加\,最终字符串如下:
zhzx/zhzx@2020@(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.10.10)(PORT=1521)))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=orcl)))
注意
1)引用OTL出错
1>d:\boost_1_63_0\boost\asio\detail\socket_option.hpp(33): error C2332: “class”: 缺少标记名
1>d:\boost_1_63_0\boost\asio\detail\socket_option.hpp(33): error C2989: “
1> d:\microsoft visual studio 10.0\vc\atlmfc\include\afxpriv.h(204) : 参见“
1>d:\boost_1_63_0\boost\asio\detail\socket_option.hpp(33): error C2011: “
1> d:\microsoft visual studio 10.0\vc\atlmfc\include\afxpriv.h(204) : 参见“
1>d:\boost_1_63_0\boost\asio\detail\socket_option.hpp(33): error C2628: “
1>d:\boost_1_63_0\boost\asio\detail\socket_option.hpp(34): error C2143: 语法错误 : 缺少“;”(在“{”的前面)
1>d:\boost_1_63_0\boost\asio\detail\socket_option.hpp(34): error C3113: “enum”不能是 模板
1>d:\boost_1_63_0\boost\asio\detail\socket_option.hpp(34): error C2447: “{”: 缺少函数标题(是否是老式的形式表?)
解决方案
#include "otl/otlv4_db.h"位于所有头文件包含之后