「已注销」 2014-01-21 01:36 采纳率: 100%
浏览 5307
已采纳

ADO的Recordset类的Open方法的用法

在MFC里用ADO连接数据库
下面这一句是测试用的,是正确的:

m_pAdoRecordset->Open("select UserName from OJUser where UserName = 'admin'",_variant_t((IDispatch *)m_pAdoConnect,true),adOpenDynamic,adLockOptimistic,adCmdText);

但是因为我要根据输入值来获取查询语句,所以我是这么写的:

CString strSQL;
    strSQL.Format(_T("select UserName from OJUser where UserName = ‘%s’"),m_Username);

测试的时候这一句也没问题,获得的strSQL也是正确的SQL语句
open方法我是这么写的:

m_pAdoRecordset->Open((_variant_t)strSQL,_variant_t(m_pAdoConnect,true),adOpenStatic,adLockOptimistic,adCmdText);

这里运行的时候就会发生中断,中断文件在msado15.tli
中断代码在

inline HRESULT Recordset15::Open ( const _variant_t & Source, const _variant_t & ActiveConnection, enum CursorTypeEnum CursorType, enum LockTypeEnum LockType, long Options ) {
    HRESULT _hr = raw_Open(Source, ActiveConnection, CursorType, LockType, Options);
    if (FAILED(_hr)) _com_issue_errorex(_hr, this, __uuidof(this));
    return _hr;
}

的return处
继续执行,下一次中断在

inline FieldPtr Fields15::GetItem ( const _variant_t & Index ) {
    struct Field * _result = 0;
    HRESULT _hr = get_Item(Index, &_result);
    if (FAILED(_hr)) _com_issue_errorex(_hr, this, __uuidof(this));
    return FieldPtr(_result, false);
}

的return处
最后中断在

inline _variant_t Field20::GetValue ( ) {
    VARIANT _result;
    VariantInit(&_result);
    HRESULT _hr = get_Value(&_result);
    if (FAILED(_hr)) _com_issue_errorex(_hr, this, __uuidof(this));
    return _variant_t(_result, false);
}

的 HRESULT _hr = get_Value(&_result);

我想知道这是为什么?另外我用CString保存动态SQL语句后 open函数该怎么用?
本人学生,懂的不多,希望各位大大说的详细点,谢谢!

  • 写回答

1条回答 默认 最新

  • zyq5945 2014-01-21 07:14
    关注

    可以用[url=http://blog.csdn.net/zyq5945/article/details/7998001]ADO助手[/url]试试你的数据库连接字符串和SQL语句。
    或者加异常捕获看是什么错误
    [code=C/C++]try
    {
    //你的ADO代码
    }
    catch (_com_error& e)
    {
    CString strMsg;
    strMsg.Format(_T("错误描述:%s\n错误消息%s"),
    (LPCTSTR)e.Description(),
    (LPCTSTR)e.ErrorMessage());
    AfxMessageBox(strMsg);
    }
    [/code]

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥20 delta降尺度方法,未来数据怎么降尺度
  • ¥15 c# 使用NPOI快速将datatable数据导入excel中指定sheet,要求快速高效
  • ¥15 再不同版本的系统上,TCP传输速度不一致
  • ¥15 高德地图点聚合中Marker的位置无法实时更新
  • ¥15 DIFY API Endpoint 问题。
  • ¥20 sub地址DHCP问题
  • ¥15 delta降尺度计算的一些细节,有偿
  • ¥15 Arduino红外遥控代码有问题
  • ¥15 数值计算离散正交多项式
  • ¥30 数值计算均差系数编程