通过安装了Postgresql ODBC驱动,然后通过OTL进行数据库的访问
void TestByOtl()
{
odbc::otl_connect db;
odbc::otl_connect::otl_initialize();
try {
db.rlogon("Driver={Postgresql Unicode};Server=192.168.10.227;Port=5432;Database=pas;Uid=postgres;Pwd=admin12345");
odbc::otl_cursor::direct_exec(
db,
"create table student (id int, name varchar(30))"
);
odbc::otl_cursor::direct_exec(
db,
"insert into student values(31090012, '[email protected]')"
);
}
catch (odbc::otl_exception& p) { // 捕获OTL异常
cerr << p.msg << endl; // 打印错误信息
cerr << p.stm_text << endl; // 打印引起错误的sql语句
cerr << p.sqlstate << endl; // 打印引起错误的sql状态
cerr << p.var_info << endl; // 打印引起错误的变量
}
db.logoff();
}
注意 1)
默认情况下,调用direct_exec函数创建表,不能直接通过pgAdmin直接查询到表的存在,必须进行刷新,或者调用登陆退出函数 db.logoff,才能够将数据刷新到数据库中
注意
没有安装Postgresql ODBC驱动,调用rlogon会抛出异常:[Microsoft][ODBC 驱动程序管理器] 未发现数据源名称并且未指定默认驱动程序
知识准备)宏定义OTL_ODBC在预编译声明指定的时候,将调用Postgresql ODBC驱动。Postgresql至少有两套ODBC驱动,有些必须在调用的时候,指定OTL_ODBC_POSTGREsql宏定义声明。如下的不同平台
的调用区别:
Linux:定义声明OTL_ODBC_POSTGREsql,调用psqlodbc.so, psqlodbcw.so库文件
Linux:定义声明OTL_ODBC,调用libodbcpsql.so库文件
Solaris:定义声明OTL_ODBC_POSTGREsql,调用libodbcpsql.so库文件
Windows:定义声明OTL_ODBC_POSTGREsql,调用pgsqlodbc30a.dll, pgsqlodbc35w.dll库文件(摘自http://otl.sourceforge.net/otl3_compile.htm)
探索)尝试不用通过安装ODBC,直接调用 pgsqlodbc30a.dll, pgsqlodbc35w.dll库文件,进行数据库的访问,是否可行?
手动通过import调用pgsqlodbc30a.dll, pgsqlodbc35w.dll,或者LoadLibrary无效
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。