CString str1,str2,str3;
str1="TexAverageLum";
str2.Format("%f",minTexAverageLum);//minTexAverageLum为folat型变量,已赋值。
str3.Format("%f",minTexAverageLum+TexAverageLum);//minTexAverageLum、TexAverageLum都为folat型变量,已赋值。
CADOConn ado;
ado.OnInitADOConn(); 
_bstr_t vSQL;
vSQL="SELECT * FROM ManyRuless";//数据库表名
_RecordsetPtr m_pRecordset;
m_pRecordset=ado.GetRecordSet(vSQL);
vSQL="INSERT INTO ManyRuless(FeatureFirst,Min_ValueFeatureFirst,Max_ValueFeatureFirst)VALUES("+str1+","+str2+","+str3+")";  
ado.ExecuteSQL(vSQL);
ado.ExitConnect();//断开数据库连接
编译可以通过,运行时出现错误。提示如下:在此上下文不允许使用‘TexAverageLum’。此处只允许使用常量、表达式或变量。不允许使用列名。
我用的是VS.NET2008,数据库是SQL2000.

解决方案 »

  1.   

    vSQL="INSERT INTO ManyRuless(FeatureFirst,Min_ValueFeatureFirst,Max_ValueFeatureFirst)VALUES("+str1+","+str2+","+str3+")";把sql语句用format连接起来
      

  2.   


    《在VC++中构造SQL语句》
    http://blog.csdn.net/zaodt/archive/2008/06/08/2525009.aspx
      

  3.   

    vSQL="INSERT INTO ManyRuless(FeatureFirst,Min_ValueFeatureFirst,Max_ValueFeatureFirst)VALUES("+str1+","+str2+","+str3+")";  
    VALUES使用错误,把sql语句用format连接起来
      

  4.   

    小弟新学后进,不是很明白。是不是在
    vSQL="INSERT INTO ManyRuless(FeatureFirst,Min_ValueFeatureFirst,Max_ValueFeatureFirst)VALUES("+str1+","+str2+","+str3+")";  
    之前加上
    str1.Format( "SELECT au_name FROM ManyRuless WHERE state = '%s'" , str1 );
    还是直接用str1.Format( "SELECT au_name FROM ManyRuless WHERE state = '%s'" , str1 );这一句就行。
    谢谢了
      

  5.   

    CString::Format是用来格式化字符串的。
    你这里使用这个方法得到你所期望的SQL语句。
      

  6.   

    CString str;
    str.Format("INSERT INTO ManyRuless(FeatureFirst,Min_ValueFeatureFirst,Max_ValueFeatureFirst)VALUES(%s, %s, %s)", str1, str2, str3);  
      

  7.   

    我如何把str写进SQL呢?
    我初用SQL请多关照。