【问题标题】:CString Format adds null value for MySQL queryCString 格式为 MySQL 查询添加空值
【发布时间】:2015-03-12 06:39:40
【问题描述】:

我必须将数据添加到数据库。我在我的 vc++ 应用程序中使用 MySQL 连接器。 我按照下面的方法创建并插入值到该表中的某些列。

 if(mysql_query(&dbSql , "CREATE TABLE IF NOT EXISTS perfscoretbl (SessionID CHAR(100) NOT NULL,TagName CHAR(50) NOT NULL ,\
     Description CHAR(50) NOT NULL,TagLow CHAR(50) NOT NULL,TagHigh CHAR(50) NOT NULL, ExtremeLow CHAR(50) NOT NULL,ExtremeHigh CHAR(50) NOT NULL,\
     AvgDev CHAR(50)  NOT NULL,PVHighTime CHAR(50) NOT NULL,PVLowTime CHAR(50) NOT NULL,PV CHAR(50) NOT NULL,\
     TotalTime CHAR(50) NOT NULL,FinalDeviation CHAR(50) NOT NULL ,Score CHAR(50) NOT NULL) ")==0) 

         printf( "Table Created\n");

取决于按钮单击我将不同的值添加到同一个表中的不同列。

CString Temp,sTmp;
sTmp="INSERT INTO perfscoretbl (SessionID, TagName, Description,TagLow,TagHigh,ExtremeLow,ExtremeHigh,AvgDev,Score) VALUES(";
Temp.Format("%s%s%s%s%s%s%s%s%0.2f%s%0.2f%s%0.2f%s%0.2f%s%0.2f%s%0.2f%s%0.2f%s",sTmp,"'",sessionId,"','",pPerfData->sTagName,"','", \
pPerfData->sDesc,"','",pPerfData->fTagLow,"','",pPerfData->fTagHigh,"','",pPerfData->fExtremeLow,"','",pPerfData->fExtremeHigh,"','", \
pPerfData->fError,"','",pPerfData->fTagScore,"')" );

if(mysql_query(&dbSql,Temp)==0)
printf("Succeed");

但是 INSERT 查询失败。当我检查临时字符串时,在字符串的末尾它有额外的字符为 0.00(null)。

Temp = "INSERT INTO perfscoretbl (SessionID, TagName, Description,TagLow,TagHigh,ExtremeLow,ExtremeHigh,AvgDev,Score) VALUES('Ins1_03122015_115222T','DPC101','DEPROP PR','16.00', '18.00','11.26','11.26','100.00','0.00')0.00(null)"

我检查了所有内容,但无法更正。 vc++ mysql连接器中的INSERT查询还有其他方法吗?

【问题讨论】:

    标签: mfc mysql-connector c-strings


    【解决方案1】:

    看起来最后一个%0.2f%s 是不需要的。

    【讨论】:

      【解决方案2】:

      补充 JijeshKV 的回答:

      我会将逗号和撇号放入格式字符串中,这会导致 Format 函数的参数少得多,并且可读性更高,如下所示:

      CString Temp,sTmp;
      sTmp="INSERT INTO perfscoretbl (SessionID, TagName, Description, TagLow, TagHigh, ExtremeLow, ExtremeHigh, AvgDev, Score) VALUES(";
      Temp.Format("'%s', '%s', '%s', '%s', '%0.2f', '%0.2f', '%0.2f', '%0.2f', '%0.2f', '%0.2f'",
                   sTmp,
                   sessionId,
                   pPerfData->sTagName,
                   pPerfData->sDesc,
                   pPerfData->fTagLow,
                   pPerfData->fTagHigh,
                   pPerfData->fExtremeLow,
                   pPerfData->fExtremeHigh,
                   pPerfData->fError,
                   pPerfData->fTagScore,"')"
                 );
      

      【讨论】:

        猜你喜欢
        • 2022-01-09
        • 1970-01-01
        • 1970-01-01
        • 2016-01-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-07-31
        相关资源
        最近更新 更多