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超方便,推荐之。

  • 相关阅读:
    JavaScript 作用域链与闭包
    JavaScript获取DOM节点
    memcache安装与简单介绍
    抽象工厂模式
    工厂模式
    适配器模式
    策略模式
    观察者模式
    责任链模式
    简单工厂模式
  • 原文地址:https://www.cnblogs.com/arthur3/p/1939776.html
Copyright © 2011-2022 走看看