SQLBindCol这个函数绑定的缓冲区变量长度length溢出,系统提示异常,请高手解惑

void CODBCdatabaseDlg::OnButconnect()
{
    // TODO: 在此添加控件通知处理程序代码
    SQLRETURN ret;
    UpdateData(true);
    m_list.ResetContent();
    OnInitODBCConn(m_edit);
    SQLCHAR no[100] = { 0 }, age[1000] = { 0 };
    SQLCHAR name[200] = { 0 }, sex[20] = { 0 };
    SQLINTEGER length;
    //******************分配执行语句句柄*********************
    ret = SQLAllocHandle(SQL_HANDLE_STMT, m_sqlHdbc, &m_sqlHstmt);

    //****************************查******************
    ret = SQLExecDirect(m_sqlHstmt, (SQLTCHAR*)L"select '编号','姓名' from student;", SQL_NTS);
    if (!SQL_SUCCEEDED(ret))
    {
        AfxMessageBox(L"执行失败");
        return;
    }
    //查的结果必须要使用sqlbindcol函数将结果与用户缓冲区绑定**************
    SQLBindCol(m_sqlHstmt, 1, SQL_C_TCHAR, (void*)no, sizeof(no), (SQLLEN*)&length);
    SQLBindCol(m_sqlHstmt, 2, SQL_C_TCHAR, (void*)name, sizeof(name), (SQLLEN*)&length);
    
    CString str1,str2; 
    str1 = (char*)(_bstr_t)no;
    str2 = (char*)(_bstr_t)name;

    
    while (SQL_NO_DATA != SQLFetch(m_sqlHstmt))
    {
        m_list.AddString(str1);
        m_list.AddString(str2);        
    }
    ExitConnect();

}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值