OTL4.0 otl_stream绑定问题

时间:2015-10-19 15:04:01

标签: binding otl

我有一个关于使用otl_stream绑定变量的问题。 无论我如何绑定,使用索引或命名顺序/命名不会影响正在更新的列。它似乎总是顺序的。

您可以看到otl_stream中的列名已被切换。然而 postgres DB显示两个插入产生相同的结果。

  1. 操作系统:Windows
  2. OTL:4.0
  3. Visual Studio 2013。
  4. 平台:x64
  5. ODBC:PostgreSQL ANSI(x64)9.03.04.00
  6. 有什么想法吗? 亲切的问候Auke-Dirk

    #include <iostream>
    #include <stdio.h>
    #include <string.h>
    #include <stdlib.h>
    
    using namespace std;
    
    // #define OTL_ODBC_UNIX // uncomment this line if UnixODBC is used
    #define OTL_ODBC_ALTERNATE_RPC
    #if !defined(_WIN32) && !defined(_WIN64)
    #define OTL_ODBC
    #else 
    #define OTL_ODBC_POSTGRESQL // required with PG ODBC on Windows
    #endif
    
    #include "otlv4_h2\otlv4.h"
    
    int _tmain(int argc, _TCHAR* argv[])
    {
        otl_connect db;
    
        otl_connect::otl_initialize(); // initialize ODBC environment
        try{
    
            db.rlogon("Driver=PostgreSQL ANSI;Server=localhost;Database=Horus;UID=postgres;PWD=12odsc7a");
    
            otl_cursor::direct_exec
                (
                db,
                "drop table test_tab",
                otl_exception::disabled // disable OTL exceptions
                ); // drop table
    
            db.commit();
    
            otl_cursor::direct_exec
                (
                db,
                "create table test_tab(f1 int, f2 int)"
                );  // create table
    
            db.commit();
    
            otl_stream ostr1(1, // no buffers
                "insert into test_tab values(:f1<int>,:f2<int>)",
                db
                );
            ostr1 << 1 << 2;
            db.commit();
    
            otl_stream ostr2(1, // no buffers
                "insert into test_tab values(:f2<int>,:f1<int>)",
                db
                );
            ostr2 << 1 << 2;
            db.commit();
        }
        catch (otl_exception& p){ // intercept OTL exceptions
            cerr << p.msg << endl; // print out error message
            cerr << p.stm_text << endl; // print out SQL that caused the error
            cerr << p.sqlstate << endl; // print out SQLSTATE message
            cerr << p.var_info << endl; // print out the variable that caused the error
        }
    
        db.logoff(); // disconnect from ODBC
    
        return 0;
    }
    

1 个答案:

答案 0 :(得分:0)

我无法解决这个问题,因此转移到了社会。

问候