zoukankan      html  css  js  c++  java
  • ADO访问DB列名无效

    最近在练习ADO访问DB,好不容易写完了一堆的类,编译通过了,结果一运行就提示列名无效。

    我一直在检查是不是表中的字段名用了关键字,然后或者是程序中和表的字段名不一致啥的。因为我的查询变量定义的类型是_bstr_t,压根就没考虑到查询变量不被DB识别的问题。

    汗,结果是个超低级的错误。

    code1(错误的):

    _bstr_t vSQL;

    vSQL="SELECT * FROM Users WHERE UserName="+cUserName;//cUserName是个CString变量,两者相加,编译可行

    执行。

    然后结果就是这个cUserName对应输入的值无法识别,说列名无效。

    其实这个SQL语句还算是简短的,长了就很麻烦,VC又不支持两个字符常量直接相加,一个SQL语句要加N次,还容易出错。

    用Format就方便许多。

    code2(正确的):

    _bstr_t vSQL;

    CString sSQL;

    sSQL.Format("SELECT * FROM Users WHERE UserName='%s'",cUserName);//假如SQL语句超长,这里就很好写,不用总是加来加去

    vSQL=_bstr_t(sSQL);//最后转换成DB支持的_bstr_t类型就OK了。

    执行。

    当然也可以在code1直接再转换一下,不用搞个CString什么的,只是format超方便,推荐之。

  • 相关阅读:
    最短母串
    noip模拟测试7
    linux下的对拍程序
    noip模拟测试6
    QWidget 前后位置设定
    C++编程规范_第5~13条 设计风格
    random /timer/sort 示例代码
    资料准备
    【转】三维动态数组 分配与释放
    批量修改文件名
  • 原文地址:https://www.cnblogs.com/arthur3/p/1939776.html
Copyright © 2011-2022 走看看