`
chenqi210
  • 浏览: 78730 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

SQLBindCol & SQL_ATTR_ROW_ARRAY_SIZE

    博客分类:
  • ODBC
 
阅读更多

如果只设置 SQL_ATTR_ROW_ARRAY_SIZE > 1,而在绑定列的时候依然是SQL_ATTR_ROW_ARRAY_SIZE == 1时的缓存大小,在vc运行中将会导致一个HEAP_CORRUPT。在mingw中可能什么也不报,但是程序就停止在读数据的地方。

所以一定要在SQL_ATTR_ROW_ARRAY_SIZE > 1时,设置正确的缓冲区。

 

 

 70                 BindData projectname(100);
 71
 72                 size_t fetchSize = 3;
 73                 SQLSetStmtAttr(stmt.getHandle().getHandle(),
 74                         SQL_ATTR_ROW_ARRAY_SIZE,
 75                         (SQLPOINTER)fetchSize,
 76                         SQL_IS_UINTEGER);
 77
 78                 bindcol(stmt,meta.getColumnMetaData(0),id);
 79                 bindcol(stmt,meta.getColumnMetaData(1),areacode);
 80                 bindcol(stmt,meta.getColumnMetaData(2),category);
 81                 bindcol(stmt,meta.getColumnMetaData(3),projectname);
 82
 83                 while(cursor.fetchNext())
 84                         cout<< meta.getColumnMetaData(0).getColumnName()
 85                                 << "=" << id.m_mem.getValue<int>()
 86                                 << ","
 87                                 << meta.getColumnMetaData(1).getColumnName()

 88                                 << "=" << (char*)areacode.m_mem.getRawBlock(
    )
 89                                 << ","
@
11 lines yanked
                                                              73,3-17       56%

 

 

分享到:
评论

相关推荐

    Linux.Unix下ODBC的编程

    分配好句柄之后,我们可以调用 SQLSetEnvAttr ( V_OD_Env, SQL_ATTR_ODBC_VERSION, (void*)SQL_OV_ODBC3, 0 ),SQL_ATTR_ODBC_VERSION 是存放你定义的 ODBC 版本号的变量,SQL_OV_ODBC3 则说明你的程序使用的是 ...

    基于SQL Server的登录、用户和角色管理的实现.pdf

    * SQLBindCol(m_hStmt, 3, SQL_CHAR, szDefDbName, 32, &cbValue):绑定缺省数据库名称 * SQLBindCol(m_hStmt, 4, SQL_CHAR, szDefLanguage, 32, &cbValue):绑定缺省语言 * m_RetCode = SQLFetch(m_hStmt):获取...

    odbc c 语言连接数据库

    SQLSetEnvAttr(env, SQL_ATTR_ODBC_VERSION, (void*)SQL_OV_ODBC3, 0); // 分配连接句柄 ret = SQLAllocHandle(SQL_HANDLE_DBC, env, &dbc); // 连接数据库 ret = SQLDriverConnect(dbc, NULL, dsn, SQL_NTS,...

    使用API函数读取数据库.rar_C ODBC_mfc odbc_odbc _odbc api_数据库 api

    SQLSetEnvAttr(hEnv, SQL_ATTR_ODBC_VERSION, (void*)SQL_OV_ODBC3, 0); // 分配连接句柄 SQLAllocHandle(SQL_HANDLE_DBC, hEnv, &hDbc); // 连接数据库 retCode = SQLDriverConnect(hDbc, NULL, "DSN=...

    连接操作数据库 C++/VC++完整代码包

    SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION, (void*)SQL_OV_ODBC3, 0); // 分配连接句柄 SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc); // 连接到数据库 retcode = SQLDriverConnect(hdbc, NULL, "DSN=...

    C/C++访问数据库

    r = SQLSetEnvAttr(hEnv, SQL_ATTR_ODBC_VERSION, (void*)SQL_OV_ODBC3, 0); if (r != SQL_SUCCESS) { cout !" ; exit(1); } ``` - 设置 ODBC 版本为 3.0。 - 如果设置失败,则输出错误信息并退出程序。 ...

    vc++ win api odbc使用方法

    SQLSetEnvAttr(hEnv, SQL_ATTR_ODBC_VERSION, (void*)SQL_OV_ODBC3, 0); // 分配连接句柄 SQLAllocHandle(SQL_HANDLE_DBC, hEnv, &hDbc); // 连接到数据库 SQLConnect(hDbc, "DSN_NAME", SQL_NTS, "USERNAME...

    [应用开发及迁移][客户端编程接口]ODBC指南.pdf

    - **SQLBindCol**: 用于绑定列到应用程序中定义的数据变量。具体的列类型可以转换为C数据类型,具体转换规则如下表所示(表2.2.1)。 - **SQLBindParameter**: 用于绑定参数到预编译的SQL语句中。支持从C数据类型向...

    ODBC SDK访问MySQL数据库三分钟全搞定.doc

    初始化 ODBC 环境的步骤是通过调用 SQLAllocHandle 分配环境句柄,并设置环境属性 SQL_ATTR_ODBC_VERSION 为 SQL_OV_ODBC3,这表示我们要使用 ODBC 3.x 版本的特性。然后,使用 SQLAllocHandle 分配连接句柄,并通过...

    ODBC_API开发教程

    ret = SQLSetEnvAttr(hEnv, SQL_ATTR_ODBC_VERSION, (SQLPOINTER)SQL_OV_ODBC3, 0); ret = SQLAllocHandle(SQL_HANDLE_DBC, hEnv, &hDbc); ret = SQLDriverConnect(hDbc, NULL, (SQLCHAR*)"DSN=MyDSN;UID=myuser;...

    PHP_ODBC+GBase8S查询大于255字节lvarchar字段的方法.docx

    $dbh = new PDO('odbc:gbasedb, 'gbasedbt', 'gbasedbt', array(PDO::ODBC_ATTR_USE_CURSOR_LIBRARY =&gt; 2)); foreach ($dbh-&gt;query('select * from t1') as $row) { print_r($row); } ``` 这段代码将使查询正常...

    ODBC_API访问数据库&#40;完整编排&#41;.docx

    4. **绑定数据**:`SQLBindCol` 用于将应用程序的缓冲区与结果集中的列关联,以便读取数据。同样,`SQLBindParameter` 可用于绑定输入/输出参数。 5. **处理错误和诊断**:当遇到错误或警告时,可以使用 `...

    ODBCAPI编程步骤.pdf

    - `SQLDescribeCol`和`SQLBindCol`函数用于描述列信息和绑定列到应用程序变量。 6. **提交事务**: - 如果应用程序支持事务,可以使用`SQLEndTran`函数提交或回滚事务。在多用户环境中,事务管理确保数据的一致性...

    MySQL-ODBC实验指南(1)1

    6. **处理结果集**:通过`SQLBindCol`将结果集的列绑定到本地变量,以便读取数据。这个示例只绑定了6列,但实际可能有更多列。 7. **释放资源**:最后,使用`SQLFreeConnect`释放连接句柄,`SQLFreeEnv`释放环境...

    ODBC API 数据库 入门

    5. **处理结果集**:如果执行的是查询,使用`SQLFetch`或`SQLFetchScroll`函数获取结果集的行,使用`SQLDescribeCol`获取列信息,使用`SQLBindCol`绑定结果到应用程序变量。 6. **关闭和释放资源**:执行完所有操作...

    odbc API头文件+使用方法

    在处理结果集时,ODBC提供了一组函数,如SQLBindCol用于绑定结果集列到应用程序变量,SQLGetData用于获取当前行的数据,SQLRowCount用于获取受影响的行数。当你完成数据处理后,记得使用SQLFreeStmt释放资源,断开...

    ODBCAPI开发教程.pdf

    通过`SQLBindCol`函数,可以将结果集中每列的数据绑定到应用程序的缓冲区。 2.5.7 ODBC中BLOB字段数据的处理 处理二进制大对象(BLOB)需要特殊的方法,如使用`SQLGetData`来获取BLOB字段的值。 2.5.8 ODBC对事务...

    vcdsnsetting_odbc_letcbk_Vc_

    6. **处理结果**:通过`SQLBindCol`绑定列到C++变量,从而读取查询结果。 7. **关闭连接**:在完成所有操作后,应释放所有句柄并断开连接,使用`SQLFreeHandle`释放句柄资源。 8. **异常处理**:在ODBC编程中,...

    ODBC-API.rar_C ODBC API_ODBC API_odbc _odbc api_odbc api book

    5. **数据操作**:说明如何使用`SQLFetch`和`SQLBindCol`获取查询结果,以及如何使用`SQLExecute`执行DML(数据操纵语言)语句如INSERT、UPDATE和DELETE。 6. **错误处理**:阐述如何通过ODBC API检查和处理可能...

Global site tag (gtag.js) - Google Analytics