将CString转换为Char以更新数据库

时间:2012-03-11 14:51:17

标签: c++ mysql c cstring

我目前需要更新MYSQL数据库。以下代码采用CString格式。但Sprintf采用char类型。如何更改/修改变量S,以便我可以使用sprintf函数将其更新到我的数据库中。

谢谢,杰森

void CT1121Dlg::DisplayTagData(int cnt,int tag_len,int start_index)

{
MYSQL *pConnection;
MYSQL_RES *pResult=NULL; 
MYSQL_ROW Row;
char Query[256];

int fields;
pConnection = mysql_init(NULL);
mysql_real_connect(pConnection,"localhost","root","123","test",0,NULL,0); 


    CString s,s0;

    int i,j;

    unsigned char t;
    unsigned char t1;


    //unsigned char y[] ="";

    //string mystring;
    //unsigned char y;

    for(i = 0; i < cnt; i++)
    {   
        s.Format("NO.%d: ",start_index+i+1);
        for(j = 0; j < tag_len; j++)
        {
            t = IdBuf[i].Ids[j];


            //sprintf(Query, "INSERT into t(e) values (%X)",y);
            if(t < 0x10)
            {
                s0.Format("0%X ",t); // if hexa is less than 10 print 0 infront of it


            }
            else
                s0.Format("%X ",t); // else just print the 2 bit hexa decimal


            s += s0;

        }


        sprintf(Query, "INSERT into t(e) values (%X)",s); // nt working
        //sprintf(Query, "INSERT into t(e) values (+ %s.c_str() +)",s); // cannot work
        if ( mysql_query(pConnection,Query) == 0 )
    {
        pResult = mysql_store_result( pConnection );    
        }

        AddOprationInfo(s);


    }

}

2 个答案:

答案 0 :(得分:1)

使用CString::Format代替,就像之前在该方法中所做的那样。 (虽然我建议不要使用CString来支持std::string ...)

答案 1 :(得分:1)

您可以使用CString::GetBuffer()方法获取指向CString的空终止内部缓冲区的指针。