从数据库中读大于 32k 的内容?

从数据库中读大于 32k 的内容?

  我在从数据库中读数据时碰到了问题。当数据栏包含超过 32k 的内容时,我就读不出来,我试过 ODBC::SQLGetData() 也不行。
  哪种类型的数据库?MS SQL,SYBASE... 试试设置一下大小:

BOOL CGetBlobStmt::Execute(LPCTSTR stmt)
{
    m_cbSize = 0;
    m_size = 0;
    LPBYTE lpData;
    lpData = (LPBYTE)GlobalLock(m_hData);

    m_retcode = SQLSetStmtOption(GetHandle(),
        SQL_MAX_LENGTH,m_dwBytesLeft);

    m_retcode = SQLExecDirect(GetHandle(),(UCHAR*)stmt,SQL_NTS);
    if(m_retcode == SQL_SUCCESS)
    {
        m_retcode = SQLFetch(GetHandle());
        if(m_retcode == SQL_SUCCESS //m_retcode == SQL_SUCCESS_WITH_INFO)
        {
            m_retcode = SQLGetData(GetHandle(),1,SQL_C_BINARY,lpData,254,&m_cbSize);
            while(m_retcode == SQL_SUCCESS_WITH_INFO)
            {
                lpData+= 254;
                m_retcode = SQLGetData(GetHandle(),1,
                    SQL_C_BINARY,lpData,254,&m_cbSize);
            }
            GetError();
        }
    }
    GlobalUnlock(m_hData);
    #if TESTDATA
    TRACE("%ld",m_size);
    #endif

    SaveFile();

    return RETVALUE;
}


在STM32系列微控制器中,设置RTC(实时时钟)使用外部32kHz时钟通常涉及以下几个步骤: 1. **硬件连接**: - 首先,你需要将外部32kHz晶体振荡器的引脚连接到STM32的RTC的CLK_IN输入引脚。这通常是RTC的EXTI线(External Interrupt Line)之一。 2. **配置RTC时钟源**: - 在STM32的HAL库中,你可以通过`RCC_RTCExConfig`函数配置RTC的工作模式。设置`RTCCLKSource`为`RTCCLKSOURCE_LSE`(Low-Speed External Oscillator),表示使用外部低速时钟源。 ```c HAL_RCC_RTCExConfig(RCC_RTCCLKSOURCE_LSE); ``` 或者在RTCMCR寄存器中手动设置`RTC_PLLCFGR`寄存器的`PLLEN`位为0(禁止内部倍频)并设置`RTC_PLLCFGR`寄存器的`RTC_PLLSRC`为`RTC_PLLSRC_HSE_BYPASS`,让RTC直接使用外部32kHz信号。 3. **启用RTC**: - 一旦时钟源配置完成,需要开启RTC功能,通常通过`HAL_RTC_DeInit(&hrtc)`关闭它,然后`HAL_RTC_Init(&hrtc)`初始化。 4. **启动延时中断**: - 设置RTC的溢出中断以周期性地触发,以便更新时间。可以通过`HAL_RTC_SetTimeout_IT(&hrtc, timeout, IT_RISING)`设置溢出中断。 ```c // 例如,每秒更新一次时间 uint32_t timeout = 1000; // 假设RTC频率是32.768kHz,所以1s大约有32768个时钟周期 HAL_RTC_SetTimeout_IT(&hrtc, timeout, IT_RISING); ``` 5. **注册中断处理程序**: - 最后,别忘了注册RTC溢出中断的回调函数,并开启中断。 注意:上述步骤可能因具体STM32型号和使用的HAL库版本略有差异。务必参考官方文档进行操作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值