c++ - 如何在调用 SQLGetData 之前知道数据的大小

标签 c++ odbc

在调用 SQLGetData 函数之前,我想知道表中可用数据的确切大小。目前我正在遵循下面列出的代码,它适用于我,但我不确定它是否安全。

谁能帮帮我?

char*ptr = new char[0];


        if (retcode = SQLGetData(hstmt, 31, SQL_C_BINARY, ptr,0,&cbfdata) != SQL_NO_DATA)
        {
            delete[] ptr;
            vector<char> vec(cbfdata);

            SQLGetData(hstmt, 31, SQL_C_BINARY, &vec[0],cbfdata,&cbfdata);

            ofstream fout;
            fout.open(file,ios::binary);
            fout.write(&vec[0],cbfdata);
            fout.close();
            vec.clear();
        }

最佳答案

您不能先调用没有数据指针的 SQLGetData 并设置 StrLen_or_IndPtr,然后驱动程序会将大小写入 StrLen_or_IndPtr。

关于c++ - 如何在调用 SQLGetData 之前知道数据的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13330943/

相关文章:

c++ - 从 EEPROM 读取并打印到串口

c# - Azure C# 应用服务 ODBC 连接到 Redshift

c++ - 删除指针: delete/delete[]/free?的方法

c++ - 如何在 OpenCV 中使用相机

c++ - 为什么函数不能通过返回类型重载?

c++ - Visual Studio 2017 在 extern "C"中使用模板时出现不正确的错误

mysql - 如果 Access 与 MySQL 数据库服务器断开连接,如何刷新链接表?

sql-server - 服务器对象在 SQL Server Management Studio 中不可用

coldfusion - 使用 ColdFusion 显示来自 AS/400 服务器的中文字符

c# - (?,?...?) 或 (@field1,@field2...@fieldn) 在参数化查询中?