我知道当我要查询一个表中的字符串字段的时候可以这么写:即对字符串的查询要加上‘ "+....+" '的变化。
  CString strSQL="SELECT * FROM College WHERE  Cname='"+m_collegename+"'";
m_pRecordset->Open(_variant_t(strSQL),_variant_t((IDispatch*m_pConnection,true),adOpenStatic,adLockOptimistic,adCmdText);
其中m_collegename是一个CString。现在我的问题是要加上一个查询smallint 字段的条件:
其中 m_collegeid 是一个int型变量。我这么写是错误的:
CString strSQL="SELECT * FROM College WHERE Cid=m_collegeid or  Cname='"+m_collegename+"'";
m_pRecordset->Open(_variant_t(strSQL),_variant_t((IDispatch*m_pConnection,true),adOpenStatic,adLockOptimistic,adCmdText);
我的问题是我现在要给m_collegeid加上什么呢?' '不行,“ ”也不行,‘+   +’ 还不行,‘“+  +”’更不行,我都快疯了,网上也没有这方面的说明,找了半天没有找到。
用MessageBox输出strSQL的时候,m_collegename会变成程序中实际的值,但是m_collegeid就还是这个字符串,不能变为在程序中的值,例如1,2等等,所以查询失败.请前辈帮帮忙,个人觉得写个SQL查询语句不难,就是把他作为字符串传递的时候所做的转换让我快疯了。。当初找那个+号就找了N个小时。。

解决方案 »

  1.   

    m_collegeid   是一个int型变量什么也不用加
      

  2.   


    CString   strSQL="SELECT   *   FROM   College   WHERE   Cid=" + m_collegeid + "  or     Cname='"+m_collegename+"'"; 
      

  3.   

    CString   strSQL="SELECT   *   FROM   College   WHERE   Cid="+m_collegeid+"   or     Cname='"+m_collegename+"'"; 红色部分转换成 STRING 类型相加
      

  4.   

      CString strSQL="SELECT * FROM College WHERE Cid="+m_collegeid+" or Cname='"+m_collegename+"'";
    会出现如下问题:
    连编译都通不过了::
    D:\shujuku2\collegemanegement.cpp(202) : error C2110: cannot add two pointers
      

  5.   

    create table temp(id int,name varchar(10))
    insert temp select 1,'aa'
    insert temp select 2,'bb'
    drop table temp
    declare @sql varchar(8000),@id int,@name varchar(10)
    select @id=1,@name='aa'
    set @sql='select * from temp where id='''+cast(@id as varchar)+''' and name='''+@name+''''
    print @sql
    exec (@sql)转一下int就行了
      

  6.   

      楼上的,非常感谢,但是我觉得建立一个临时表太复杂了一点,有没有简单点的,难道查询一个INt型数据段就这么难?
      

  7.   

    CString   strSQL="SELECT   *   FROM   College   WHERE   Cid=convert(varchar(10),m_collegeid)   or     Cname='"+m_collegename+"'"; 
      

  8.   

     我自己解决问题了,CString str;
    str.Format("%d",m_collegeid);
    CString   strSQL="SELECT   *   FROM   College   WHERE   Cid='"+m_collegeid+" '  or  Cname='"+m_collegename+"'"; 
    搞定!!!
    不过还是感谢各位!!!